Ciao a tutti.
ho 3 pulsanti che mi fanno partire 3 sequenze diverse tra di loro. Ogni sequenza consiste una serie di lampeggi di 2 lampadine ovviamente in modi differenti. Vorrei implementare il codice nel seguente modo.
All'avvio se premo 1,2,3n ottengo sequenza 1,2,3.
successivamente,
se premo 1,3 ottengo sequenza 31
se premo 3,2 ottengo 23
se premo 3,1 ottengo 1*3
ovviamente le sequenze con asterisco li devo ancora creare.
Mi viene difficile da spiegare ma vorrei in pratica far si che premendo il pulsante 1 (esempio) parta la sequenza 12 oppure 13 in funzione dell'ultimo pulsante premuto.
ovviamente all'avvio deve anche riconoscere che non è stato premuto alcun pulsante.
// Dichiarazione dei pin per i pulsanti
const int pulsante1Pin = 2;
const int pulsante2Pin = 3;
const int pulsante3Pin = 4;
// Dichiarazione dei pin per le lampadine
const int lampadina1Pin = 5;
const int lampadina2Pin = 6;
void setup() {
// Inizializzazione dei pin per i pulsanti
pinMode(pulsante1Pin, INPUT_PULLUP);
pinMode(pulsante2Pin, INPUT_PULLUP);
pinMode(pulsante3Pin, INPUT_PULLUP);
// Inizializzazione dei pin per le lampadine
pinMode(lampadina1Pin, OUTPUT);
pinMode(lampadina2Pin, OUTPUT);
// Assicurarsi che le lampadine siano spente all'avvio
digitalWrite(lampadina1Pin, LOW);
digitalWrite(lampadina2Pin, LOW);
}
void loop() {
// Controlla se il pulsante 1 è stato premuto
if (digitalRead(pulsante1Pin) == HIGH) {
sequenza1();
}
// Controlla se il pulsante 2 è stato premuto
if (digitalRead(pulsante2Pin) == HIGH) {
sequenza2();
}
// Controlla se il pulsante 3 è stato premuto
if (digitalRead(pulsante3Pin) == HIGH) {
sequenza3();
}
}
// Funzione per eseguire la sequenza 1
void sequenza1() {
digitalWrite(lampadina1Pin, HIGH);
delay(500);
digitalWrite(lampadina2Pin, HIGH);
delay(500);
digitalWrite(lampadina1Pin, LOW);
digitalWrite(lampadina2Pin, LOW);
}
// Funzione per eseguire la sequenza 2
void sequenza2() {
digitalWrite(lampadina2Pin, HIGH);
delay(500);
digitalWrite(lampadina2Pin, LOW);
delay(500);
digitalWrite(lampadina1Pin, HIGH);
digitalWrite(lampadina2Pin, HIGH);
delay(500);
digitalWrite(lampadina1Pin, LOW);
digitalWrite(lampadina2Pin, LOW);
}
// Funzione per eseguire la sequenza 3
void sequenza3() {
digitalWrite(lampadina1Pin, HIGH);
delay(300);
digitalWrite(lampadina2Pin, HIGH);
delay(300);
digitalWrite(lampadina1Pin, LOW);
digitalWrite(lampadina2Pin, LOW);
delay(300);
digitalWrite(lampadina1Pin, HIGH);
digitalWrite(lampadina2Pin, HIGH);
delay(300);
digitalWrite(lampadina1Pin, LOW);
digitalWrite(lampadina2Pin, LOW);
}