]> git.piffa.net Git - sketchbook_andrea/blob - multitasking/BlinkWithoutDelay_6_class/BlinkWithoutDelay_6_class.ino
cleanup multitasking
[sketchbook_andrea] / multitasking / BlinkWithoutDelay_6_class / BlinkWithoutDelay_6_class.ino
1 /* Blink without Delay
2  Soluzione
3  
4  Introdotto un argomento per la funzione che nodifica l'intervallo di lampeggio 
5  */
6
7 class Lampeggiatore {
8   // Lampeggia un LED utilizzando millis()
9   // Variabili
10   int ledPin ;           // il numero del LED pin
11   int ledState ;         // stato attuale del LED
12   long interval ;        // milliseconds di intervallo nel lampeggiare
13   long previousMillis ;  //precedente cambio di stato
14
15   // Constructor: come viene instanziato un oggetto facente parte della classe
16 public:
17   Lampeggiatore(int pin, long time)
18   {
19     ledPin = pin;
20     pinMode(ledPin, OUTPUT);
21     ledState = LOW;
22     previousMillis = 0;
23     interval = time;
24   }
25
26 // Una funzione facente parte di una classe prende il nome di "metodo" della stessa:
27   void Update () {
28     // Illumina il ledB secondo un intervallo passato come argomento
29
30     if(millis() - previousMillis > interval) {
31       // save the last time you blinked the LED 
32       previousMillis = millis();   
33
34       // if the LED is off turn it on and vice-versa:
35       ledState = !ledState ; // Inverti il LED
36     }
37     // set the LED with the ledState of the variable:
38     digitalWrite(ledPin, ledState);
39   }
40   
41 };
42
43 // Instanziamo i due led dalla classe 
44 Lampeggiatore ledA(13, 1000);
45 Lampeggiatore ledB(12, 500);
46
47 void setup() {
48 }
49
50 void loop()
51 {
52 ledA.Update();
53 ledB.Update();
54 }
55
56