X-Git-Url: http://git.piffa.net/web?p=sketchbook_andrea;a=blobdiff_plain;f=advanced_projects%2Fstate_machine%2Fblink%2Fblink_2_trans%2Fblink_2_trans.ino;fp=advanced_projects%2Fstate_machine%2Fblink%2Fblink_2_trans%2Fblink_2_trans.ino;h=0000000000000000000000000000000000000000;hp=1841f878d270307fc1b667f435183ec3eaaece2c;hb=8a90a5875d2fcf8db21835920d57f97a4bca0ade;hpb=92687f500a1e7aed1fe35540e4f4aee5f8bcf6a1 diff --git a/advanced_projects/state_machine/blink/blink_2_trans/blink_2_trans.ino b/advanced_projects/state_machine/blink/blink_2_trans/blink_2_trans.ino deleted file mode 100644 index 1841f87..0000000 --- a/advanced_projects/state_machine/blink/blink_2_trans/blink_2_trans.ino +++ /dev/null @@ -1,106 +0,0 @@ -/* - Blink FSM - - Accensione e spegnimanto di un LED utilizzando - una FSM con 4 stati, statici e di transizione. - -Costrutto switch basato su uno struct. - - */ - -// Dichiarazione variabili -int led = 11; // PWM -int pausa = 1000; // Variabile richiambile nel corso dell'esecuzione -byte lum = 0 ; - -void setup() { - // Inizializziamo il PIN 13 come OUTPUT - pinMode(led, OUTPUT); -} - -enum fsm_stati { // Stati della FMS - on, // Statico - to_off, // Transizione - off, - to_on -}; - -fsm_stati stato ; - -void loop() { - switch (stato) { - case on : - // Operativa: Machine - digitalWrite(led, HIGH); // Mette il PIN del LED in stato acceso - delay(pausa); - - // Stati - stato = to_off ; // Setta il prossimo state - lum = 255; - break; - - case to_off : - while (lum > 0) { - lum-- ; - analogWrite(led, lum); // Mette il PIN del LED in stato acceso - delay(1); - } - - stato = off ; // Setta il prossimo state - break; - - case off: - digitalWrite(led, LOW); // Mette il PIN del LED in stato spento - delay(pausa); - - stato = to_on ; - lum = 0; - break; - - case to_on : - while (lum < 255) { - lum++ ; - analogWrite(led, lum); // Mette il PIN del LED in stato acceso - delay(1); - } - - stato = on ; // Setta il prossimo state - break; - } -} - -/* Domande: - - 1.Cosa comporta l'uso della funzione delay? - 2.Come si puo' modificare lo sketch per poter eseguire piu' conpiti contemporaneamente? - -Esercizi successivi: -- Creare una FSM con un LED RGB avente due stati Red e Green, una transizione yellow tra i due -- Creare una FSM per la gestione di un semaforo - (esempio disponibile in sketchbook_andrea/advanced_projects/state_machine ) - - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - . - Soluzioni: - - 1.Delay rende il codice blocking, null'altro puo' essere eseguito durante i delay - 2.Si potrebbe utilizzare millis(), vedi esercizi multitasking -*/