1 /* Blink without Delay - Pulizia
3 Semplificato il ciclo condizionale, la seconda funzione non necessita
4 di una variabile di stato per tracciare il LED.
8 // constants won't change. Used here to
12 const int ledA = 13; // the number of the LED pin
13 // Variables will change:
14 int ledStateA = LOW; // ledState used to set the LED
15 long previousMillisA = 0; // will store last time LED was updated
18 const int ledB = 12; //Secondo LED
19 // int ledStateB = LOW; // Possiamo leggere lo stato del registro del LED
21 long previousMillisB = 0; // will store last time LED was updated
24 // set the digital pin as output:
25 pinMode(ledA, OUTPUT);
26 pinMode(ledB, OUTPUT);
38 void lightLedA (int interval) {
39 // Illumina il ledA secondo un intervallo passato come argomento
41 if (millis() > previousMillisA + interval) {
42 // save the last time you blinked the LED
43 previousMillisA = millis();
45 // if the LED is off turn it on and vice-versa:
46 ledStateA = !ledStateA ; // Inverti il LED
48 digitalWrite(ledA, ledStateA);
51 void lightLedB (int interval) {
52 // Illumina il ledB secondo un intervallo passato come argomento
54 if (millis() > previousMillisB + interval) {
55 previousMillisB = millis();
56 digitalWrite(ledB, !digitalRead(ledB));
57 // Leggiamo direttamente il registro di ledB e scriviamo il suo opposto,
58 // questo ci permette di non dover avere una variabile per tracciare lo stato.
62 1. E' possibile avere una sola funzione che permetta di gestire
63 qualunque LED io voglia aggiungere?
66 - integrazione tra funzioni e dati: programmazione a oggetti
67 - Uso di pointers per modificare dati esterni allo scope della funzione, static
68 - Uso di forme di dati strutturate (array, struct) per scambiare dati tra funzioni e programma