]> git.piffa.net Git - sketchbook_andrea/blobdiff - advanced_projects/state_machine/semaforo_2_1_doppio/semaforo_2_1_doppio.ino
FSM reorder
[sketchbook_andrea] / advanced_projects / state_machine / semaforo_2_1_doppio / semaforo_2_1_doppio.ino
diff --git a/advanced_projects/state_machine/semaforo_2_1_doppio/semaforo_2_1_doppio.ino b/advanced_projects/state_machine/semaforo_2_1_doppio/semaforo_2_1_doppio.ino
deleted file mode 100644 (file)
index 412e11f..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
-   Incrocio RGB
-
-   Un incrocio costituito da due strade, una principale e una secondaria.
-   La via viene concessa al secondario alla pressione di un bottone,
-   il secondario cambia automaticamente dopo una pausa.
-   Viene utilizzato un oggetto della libreria common per gestire i LED.
-
-   Uno stimolo esterno rappresentato dalla pressione di un bottone
-   causa il passaggio di stato.
-
- */
-
-#include <common.h>
-const byte input = 2; // PIN del bottone
-int pausa = 3000;
-enum states_available { // Stati della FMS
-    turn_green,    // Dinamico, transizione
-    green,         // Statico
-    wait_button,
-    turn_red,
-    red
-};
-
-states_available FSM1  ;
-states_available FSM2 ;
-
-
-void setup() {
-  pinMode(input, INPUT_PULLUP);
-  Serial.begin(9600);
-  Serial.flush();
-}
-
-RGBLed led_main(11, 10, 9); 
-RGBLed led_secondary(8, 7, 6); 
-
-void loop() {
-switch (FSM1) {
-    case turn_green :
-    led_main.Green();
-    FSM1 = green ; // Setta il prossimo state
-    FSM2 = red ;    // Setta il prossimo state
-    break;
-
-    case green:
-    delay(pausa * 2/3);
-    FSM1 = wait_button ;
-    break;
-
-    case wait_button:
-    if (digitalRead(input) == LOW) { 
-    FSM1 = turn_red ; // Il passaggio di stato avviene alla pressione di un bottone
-    };
-    delay(20);
-    break;
-
-    case turn_red :
-    led_main.Yellow();
-    delay(pausa/3);
-    led_main.Red();
-    FSM1 = red ;
-    FSM2 = turn_green; // Stimolo al semafor secondario
-    break;
-
-    case red :
-    //delay(pausa);
-    //main = turn_green ;
-    break;
-}
-switch (FSM2) {
-    case turn_green :
-    led_secondary.Green();
-    FSM2 = green ; // Setta il prossimo state
-    break;
-
-    case green:
-    delay(pausa * 2/3);
-    FSM2 = turn_red ; // Niente stimoli
-    break;
-
-    case turn_red :
-    led_secondary.Yellow();
-    delay(pausa/3);
-    FSM1 = turn_green ;
-    FSM2 = red ;
-    break;
-
-    case red :
-    led_secondary.Red();
-    break;
-}
-
-Serial.print(millis()); 
-Serial.print(" \t Stato attuale Main: ");
-Serial.print(FSM1);
-Serial.print(", secondary: ");
-Serial.println(FSM2);
-
-}