]> git.piffa.net Git - sketchbook_andrea/blob - multitasking/BlinkWithoutDelay_6_class/BlinkWithoutDelay_6_class.ino
9ce5e9bf01e24b380a6cc01d4e7f63b296c36e71
[sketchbook_andrea] / multitasking / BlinkWithoutDelay_6_class / BlinkWithoutDelay_6_class.ino
1 /* Blink without Delay
2  Class: definizione di una classe LED.
3  
4  L'oggetto LED integra i dati (proprieta') del led con i metodi (le funzioni).
5  */
6
7 // Oggetti:
8 class Lampeggiatore {
9   // Lampeggia un LED utilizzando millis()
10   // Variabili
11   int ledPin ;           // il numero del LED pin
12   int ledState ;         // stato attuale del LED
13   long interval ;        // milliseconds di intervallo nel lampeggiare
14   long previousMillis ;  // precedente cambio di stato
15
16   // Constructor: come viene instanziato un oggetto facente parte della classe
17 public:
18   Lampeggiatore(int pin, long time)
19   {
20     ledPin = pin;
21     pinMode(ledPin, OUTPUT);
22     ledState = LOW;
23     previousMillis = 0;
24     interval = time;
25   }
26
27 // Una funzione facente parte di una classe prende il nome di "metodo" della stessa:
28   void Update () {
29     // Illumina il ledB secondo un intervallo passato come argomento
30
31     if (millis() > previousMillis + interval) {
32       // save the last time you blinked the LED 
33       previousMillis = millis();   
34
35       // if the LED is off turn it on and vice-versa:
36       ledState = !ledState ; // Inverti il LED
37     }
38     // set the LED with the ledState of the variable:
39     digitalWrite(ledPin, ledState);
40   }
41   
42 };
43
44 // Instanziamo i due led dalla classe 
45 Lampeggiatore ledA(13, 1000);
46 Lampeggiatore ledB(12, 500);
47
48 void setup() {
49 }
50
51 void loop()
52 {
53 ledA.Update();
54 ledB.Update();
55 }
56
57 /* Domande:
58  1. Ogni quante volte viene eseguito il codice del loop per ogni millisecondo?
59  2. Utilizzare un interrupt per richiamare Update()
60     Es: https://learn.adafruit.com/multi-tasking-the-arduino-part-2/overview
61  */
62