1 /* Blink without Delay - due led
3 Utilizziamo la funzione millis() al posto di delay()
4 per poter gestire il lampeggio di un LED senza bloccare
7 Questo esercizio e' strutturato in una serie di passaggi incrementali
8 nei quali una versione minimale si evolve per introdurre
9 programmazione ad oggetti, interrupts, pointers.
11 Schema: https://lab.piffa.net/schemi/millis_bb.png
13 http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
16 // constants won't change. Used here to
18 const int ledA = 13; // Primo LED
19 const int ledB = 12; // Secondo LED
21 // Variabbili di stato
22 int ledStateA = LOW; // ledState used to set the LED
23 int ledStateB = LOW; // ledState used to set the LED
25 unsigned long previousMillisA = 0; // Timestamp dell'ultimo aggiornamento
26 unsigned long previousMillisB = 0; // Timestamp dell'ultimo aggiornamento
28 long intervalA = 1000; // interval at which to blink (milliseconds)
29 long intervalB = 500; // interval at which to blink (milliseconds)
32 pinMode(ledA, OUTPUT);
33 pinMode(ledB, OUTPUT);
39 if (millis() - previousMillisA >= intervalA) {
40 // Aggiornimo il riferimento temporale
41 previousMillisA += intervalA;
43 // Se il LED e' spento accendiamolo e vice-versa:
48 digitalWrite(ledA, ledStateA);
52 if (millis() >= previousMillisB + intervalB) {
53 // save the last time you blinked the LED
54 previousMillisB += intervalB;
55 // Se il LED e' spento accendiamolo e vice-versa:
60 // e' possibile semplificare questa operazione?
61 // Hint: lo stato del LED e' binario: ha solo due stati possibili.
63 digitalWrite(ledB, ledStateB);
68 1. Cercare di semplificare / ripulire il codice.