/* Blink without Delay
- Soluzione
- Introdotto un argomento per la funzione che nodifica l'intervallo di lampeggio
+Raggruppamento delle proprieta' dell'oggetto in uno struct.
+Una funzione accetta e restituisce uno struct di questo tipo
+facendo una "copy by value" (vedi esercizio con i pointers per
+una "copy by reference").
+
+Questo e' un esercizio avanzato: propedeutico a capire le basi
+della programmazione a oggetti (suggerimento:
+https://lab.piffa.net/sketchbook_andrea/RGB_LED/
+
+e' piu' semplice dato che non usa pointers e references
+non dovendo modificare in modo permanente nessuna variabile
+dello struct).
*/
struct blinkLed {
struct blinkLed lightLed(struct blinkLed temp) { // dataType tipo_di_struct nome_funzione(argomenti)
// Illumina il ledA secondo un intervallo passato come argomento
- if (millis() > temp.previousMillis + temp.interval) { // gli elementi dello struct sono accessibili tramite l'operatore [punto]
+ if (millis() - temp.previousMillis >= temp.interval) { // gli elementi dello struct sono accessibili tramite l'operatore [punto]
// save the last time you blinked the LED
- temp.previousMillis = millis();
+ temp.previousMillis += temp.interval ;
// if the LED is off turn it on and vice-versa:
temp.ledState = !temp.ledState ; // Inverti il LED