4 Accensione e spegnimanto di un LED utilizzando
5 una FSM con 4 stati, statici e di transizione.
7 Costrutto switch basato su un enum:
11 // Dichiarazione variabili
13 int pausa = 1000; // Variabile richiambile nel corso dell'esecuzione
17 // Inizializziamo il PIN 13 come OUTPUT
21 enum fsm_stati: byte { // Stati della FMS, explicit type cast
23 to_off, // Transizione
26 } stato ; // denominazione di una variabile
33 digitalWrite(led, HIGH); // Mette il PIN del LED in stato acceso
37 stato = to_off ; // Setta il prossimo state
44 analogWrite(led, lum); // Mette il PIN del LED in stato acceso
48 stato = off ; // Setta il prossimo state
52 digitalWrite(led, LOW); // Mette il PIN del LED in stato spento
62 analogWrite(led, lum); // Mette il PIN del LED in stato acceso
66 stato = on ; // Setta il prossimo state
69 default: // Opzionale, quando non si verificano altre condizioni
76 1.Cosa comporta l'uso della funzione delay?
77 2.Come si puo' modificare lo sketch per poter eseguire piu' conpiti contemporaneamente?
80 - Creare una FSM con un LED RGB avente due stati Red e Green, una transizione yellow tra i due.
81 - Creare una FSM in cui il passaggio di stato e' causato da un evento esterno, es la pressione di un bottone.
82 - Creare una FSM per la gestione di un semaforo
83 (esempio disponibile in sketchbook_andrea/advanced_projects/state_machine )
106 1.Delay rende il codice blocking, null'altro puo' essere eseguito durante i delay
107 2.Si potrebbe utilizzare millis(), vedi esercizi multitasking
108 oppure: https://www.sparkfun.com/news/1801