const int pinPulsanteMarcia = 2; // Pin del pulsante per la marcia
const int pinPulsanteArresto = 3; // Pin del pulsante per l'arresto
const int pinMotore = 4; // Pin del motore
enum Stati {
MotoreFermo, // 0
MotoreInMarcia, // 1
};
int statoCorrente = Stati::MotoreFermo; // Stato corrente
void setup() {
Serial.begin(9600);
pinMode(pinPulsanteMarcia, INPUT);
pinMode(pinPulsanteArresto, INPUT);
pinMode(pinMotore, OUTPUT);
digitalWrite(pinMotore, LOW); // Inizialmente, il motore è fermo
}
void loop() {
int statoPulsanteMarcia = digitalRead(pinPulsanteMarcia);
int statoPulsanteArresto = digitalRead(pinPulsanteArresto);
switch (statoCorrente) {
case Stati::MotoreFermo:
if (statoPulsanteMarcia == HIGH) {
statoCorrente = Stati::MotoreInMarcia;
Serial.println("Pulsante di marcia premuto");
}
digitalWrite(pinMotore, LOW); // Spegni il motore
break;
case Stati::MotoreInMarcia:
if (statoPulsanteArresto == HIGH) {
statoCorrente = Stati::MotoreFermo;
Serial.println("Pulsante di arresto premuto");
}
digitalWrite(pinMotore, HIGH); // Accendi il motore
break;
}
delay(50);
}