]> git.piffa.net Git - sketchbook_andrea/blob - libraries/common/common.cpp
2de42e975d4bc038ec21bde50c87c5b76b3ba70d
[sketchbook_andrea] / libraries / common / common.cpp
1 /*  Common
2  *
3  *  Oggetti di uso comune
4  */
5
6 #include "Arduino.h"
7 #include "common.h"
8
9
10 //////////////////////
11 // RGB LED
12 // Common anode
13
14 RGBLed::RGBLed(byte pinR, byte pinG, byte pinB) {
15       redPin    = pinR ;
16       greenPin  = pinG ;
17       bluePin   = pinB ;
18
19       // Equvalente del Setup() per inizializzare i PIN
20       pinMode(redPin, OUTPUT);
21       pinMode(greenPin, OUTPUT);
22       pinMode(greenPin, OUTPUT);
23 };
24
25 void RGBLed::SetColor (byte r, byte g, byte b) {
26 // Imposta il colore di un LED RGB
27       analogWrite(redPin,   r);
28       analogWrite(greenPin, g);
29       analogWrite(bluePin,  b);
30     };
31
32 void RGBLed::Red () {
33 // Accende il LED di rosso
34       SetColor(0,255,255);
35     };
36
37 void RGBLed::Green () {
38 // Accende il LED di verde
39       SetColor(255,0,255);
40     };
41
42 void RGBLed::Blue () {
43 // Accende il LED di blu
44       SetColor(255,255,0);
45     };
46
47 void RGBLed::Magenta () {
48 // Accende il LED di magenta
49       SetColor(0,255,0);
50     };
51
52 void RGBLed::Cyano () {
53 // Accende il LED di Cyano
54       SetColor(255,0,0);
55     };
56
57 void RGBLed::Yellow () {
58 // Accende il LED di giallo
59       SetColor(0,0,255);
60     };
61
62 void RGBLed::White () {
63 // Accende il LED 
64       SetColor(0,0,0);
65     };
66
67 void RGBLed::Off () {
68 // Spegne il LED 
69       SetColor(255,255,255);
70     };
71
72
73
74 /////////////////////////////////////
75 // Lampeggiatore
76 // Constructor
77 Lampeggiatore::Lampeggiatore(int pin)
78 {
79     ledPin = pin;
80     pinMode(ledPin, OUTPUT);
81     ledState = LOW;
82     previousMillis = 0;
83     interval = 500;
84 };
85
86
87
88
89 // Una funzione facente parte di una classe prende il nome di "metodo" della stessa:
90 void Lampeggiatore::Blink() {
91     // Illumina il led a 500ms
92
93     if(millis() - previousMillis > interval) {
94         // save the last time you blinked the LED
95         previousMillis = millis();
96
97         // if the LED is off turn it on and vice-versa:
98         ledState = !ledState ; // Inverti il LED
99     }
100     // set the LED with the ledState of the variable:
101     digitalWrite(ledPin, ledState);
102 };
103
104 void Lampeggiatore::Blink(long time) {
105     // Illumina il led secondo un intervallo passato come argomento
106
107     if(millis() - previousMillis > time) {
108         // save the last time you blinked the LED
109         previousMillis = millis();
110
111         // if the LED is off turn it on and vice-versa:
112         ledState = !ledState ; // Inverti il LED
113     }
114     // set the LED with the ledState of the variable:
115     digitalWrite(ledPin, ledState);
116 };
117
118 void Lampeggiatore::Blink(long up, long down) {
119     // Illumina il ledB precisando ontime e downtime
120
121     if((ledState == HIGH)&& (millis() - previousMillis > up)) {
122     // save the last time you blinked the LED
123         previousMillis = millis();
124         ledState = LOW  ;
125     }
126     else if((ledState == LOW)&& (millis() - previousMillis > down)) {
127         previousMillis = millis();
128         ledState = HIGH  ;
129     }
130
131     // set the LED with the ledState of the variable:
132     digitalWrite(ledPin, ledState);
133 };
134
135 /////////////////////////////////////
136 // Pwm
137 // Constructor
138 Pwm::Pwm(int pin)
139 {
140     ledPin = pin;
141     pinMode(ledPin, OUTPUT);
142     previousMillis = 0;
143     byte brightness = 0 ;
144     increment = 1;
145 };
146
147 void Pwm::Up(long speed) {
148     // Aumenta progressivamente la luminosita' usanndo millis()
149     // quindi senza bloccare il processore
150
151     analogWrite(ledPin, brightness);  // La funziona analogWrite utilizza il PWM
152     // a 8 bit integrato nel MCU: simula un serie di valori intermedi
153     // nell'intervallo discreto con minimo 0 (spento) e  massimo 255 (acceso).
154
155     if ((millis() - previousMillis) > speed / 256) {
156         brightness++; // Incrementiamo la luminosita'
157         previousMillis = millis();
158     };
159 }
160
161 void Pwm::Down(long speed ) {
162     // Riduce progressivamente la luminosita' usanndo millis()
163     // quindi senza bloccare il processore
164
165     analogWrite(ledPin, brightness);  // La funziona analogWrite utilizza il PWM
166     // a 8 bit integrato nel MCU: simula un serie di valori intermedi
167     // nell'intervallo discreto con minimo 0 (spento) e  massimo 255 (acceso).
168
169     if ((millis() - previousMillis) > speed / 256) {
170         brightness--; // Incrementiamo la luminosita'
171         previousMillis = millis();
172     };
173 }
174
175 void Pwm::UD(long speed ) {
176     // Aumenta e riduce in sequenza la luminosita' usanndo millis()
177     if ((millis() - previousMillis) > speed / 512) {
178         brightness = brightness + increment; // Incrementiamo la luminosita'
179         previousMillis = millis();
180         if (brightness == 0 || brightness == 255) { // Reverse direction
181             increment = -increment ;
182         };
183     };
184     analogWrite(ledPin, brightness);
185 }
186
187
188
189 //////////////////
190 // Funzioni
191
192
193 void brilla(byte pin, int velocita ) { // Defalt value di velocita' solo nell'Header
194   // Accende e spegne il LED accetando un argomento 
195   // per impostare la velocita'.
196
197 pinMode(pin, OUTPUT); 
198   // sequenze di istruzione: accendere e spegnere il LED
199   digitalWrite(pin, HIGH);   // turn the LED on (HIGH is the voltage level)
200   delay(velocita);               // wait for a second
201   digitalWrite(pin, LOW);    // turn the LED off by making the voltage LOW
202   delay(velocita);               // wait for a second
203 };
204