]> git.piffa.net Git - sketchbook_andrea/blob - libraries/common/common.cpp
Calibrazioni
[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         Serial.println(brightness);
159     };
160 }
161
162 void Pwm::Down(long speed ) {
163     // Riduce progressivamente la luminosita' usanndo millis()
164     // quindi senza bloccare il processore
165
166     analogWrite(ledPin, brightness);  // La funziona analogWrite utilizza il PWM
167     // a 8 bit integrato nel MCU: simula un serie di valori intermedi
168     // nell'intervallo discreto con minimo 0 (spento) e  massimo 255 (acceso).
169
170     if ((millis() - previousMillis) > speed / 256) {
171         brightness--; // Incrementiamo la luminosita'
172         previousMillis = millis();
173         Serial.println(brightness);
174     };
175 }
176
177 void Pwm::UD(long speed ) {
178     // Aumenta e riduce in sequenza la luminosita' usanndo millis()
179     if ((millis() - previousMillis) > speed / 512) {
180         brightness = brightness + increment; // Incrementiamo la luminosita'
181         previousMillis = millis();
182         Serial.println(brightness);
183         analogWrite(ledPin, brightness);
184         if (brightness == 0 || brightness == 255) { // Reverse direction
185             increment = -increment ;
186         };
187     };
188 }
189
190
191
192 //////////////////
193 // Funzioni
194
195
196 void brilla(byte pin, int velocita ) { // Defalt value di velocita' solo nell'Header
197   // Accende e spegne il LED accetando un argomento 
198   // per impostare la velocita'.
199
200 pinMode(pin, OUTPUT); 
201   // sequenze di istruzione: accendere e spegnere il LED
202   digitalWrite(pin, HIGH);   // turn the LED on (HIGH is the voltage level)
203   delay(velocita);               // wait for a second
204   digitalWrite(pin, LOW);    // turn the LED off by making the voltage LOW
205   delay(velocita);               // wait for a second
206 };
207