3 Raggruppamento delle proprieta' dell'oggetto in uno struct.
4 Una funzione accetta e restituisce uno struct di questo tipo
5 facendo una "copy by value" (vedi esercizio con i pointers per
6 una "copy by reference").
8 Questo e' un esercizio avanzato: propedeutico a capire le basi
9 della programmazione a oggetti (suggerimento:
10 https://lab.piffa.net/sketchbook_andrea/RGB_LED/
12 e' piu' semplice dato che non usa pointers e references
13 non dovendo modificare in modo permanente nessuna variabile
18 // Lampeggia un LED utilizzando millis()
20 int ledPin ; // il numero del LED pin
21 int ledState ; // stato attuale del LED
22 long interval ; // milliseconds di intervallo nel lampeggiare
23 long previousMillis ; //precedente cambio di stato
27 // Instanziamo i due led dalla classe
34 pinMode(ledA.ledPin, OUTPUT); // Domanda: integrare l'impostazione del LED nel codice della funzione.
35 pinMode(ledB.ledPin, OUTPUT);
40 ledA = lightLed(ledA ); // Aggiorna lo stato del LED in base all'esecuzione della funzione
41 ledB = lightLed(ledB );
47 struct blinkLed lightLed(struct blinkLed temp) { // dataType tipo_di_struct nome_funzione(argomenti)
48 // Illumina il ledA secondo un intervallo passato come argomento
50 if (millis() - temp.previousMillis >= temp.interval) { // gli elementi dello struct sono accessibili tramite l'operatore [punto]
51 // save the last time you blinked the LED
52 temp.previousMillis += temp.interval ;
54 // if the LED is off turn it on and vice-versa:
55 temp.ledState = !temp.ledState ; // Inverti il LED
57 digitalWrite(temp.ledPin, temp.ledState);
58 return(temp); // copy by value