Salve a tutti mi chiamo Vito e sono iscritto da solo oggi al forum.
Vorrei costruire un Buzzer con segnatempo per giocare a paintball, ho creato gia il programma ma non riesco a proseguire perche non conosco bene la logica di programmazione e per questo mi serve il vostro aiuto.
Di seguito descrivo cosa vorrei realizzare
Nel campo da gioco avro due lampade rosse, una verde, due pulsanti e un buzzer.
Alla pressione di un pulsante si accende la luce rossa corrispondente fino a quando entrambe le squadre sono pronte e premono entrambi i pulsanti, a quel momento per circa 20 secondi lampeggiano le due lampade rosse fino a quando parte il buzzer e inizia la partita.
Dopo il buzzer si spengono le lampade rosse e si accende quella verde che rimane accesa per tutta la durata del gioco.
Il gioco finisce a tempo, oppure se viene premuto almeno uno dei due pulsanti.
a fine gioco si spegne la lampada verde e suona il buzzer.
Il loop e cosi pronto per iniziare da capo.
Fino all accensione delle due lampade rosse sono arrivato ma non riesco ad andare avanti.
//con lattivazione del tasto1 si attiva il led rosso 1
//con lattivazione del tasto2 si attiva il led rosso 2
//se entrambi i tasti sono stati attivati allora parte il conteggio di 20 secondi
//alla fine di venti secondi parte il buzzer con il led verde
//dopo 180 secondi si spegne il Loop
int TASTO1 = 2; //imput del tasto1
int TASTO2 = 3; //imput del tasto2
int LED_RED1 = 4; //output luce rossa associato a imput tasto1 //squadra1 pronta
int LED_RED2 = 5; //output luce rossa associato a imput tasto2 //squadra2 pronta
int BUZZER = 6; //output sonoro inizio/fine dei giochi //3 secondi
int LED_GREEN = 7; //output luce verde // High inizio giochi //Low fine giochi
int fs1LED_RED1 = LOW; //fase1 Led1 spento
int fs1LED_RED2 = LOW; //fase1 Led2 spento
void setup()
{
pinMode (TASTO1, INPUT);
pinMode (TASTO2, INPUT);
pinMode (LED_RED1, OUTPUT);
pinMode (LED_RED2, OUTPUT);
pinMode (BUZZER, OUTPUT);
pinMode (LED_GREEN, OUTPUT);
}
void loop()
{
int leggiTASTO1=digitalRead (TASTO1); // input digitale pin2
if (leggiTASTO1==1) // variabile if - se leggi Tasto1 premuto - valore 1
{
if (fs1LED_RED1==LOW) //verifica lo stato del Led rosso1
{
fs1LED_RED1=HIGH; //esegue comando Led rosso1 acceso
digitalWrite(LED_RED1, fs1LED_RED1);
delay (20000); //intervallo tempo acceso 20 secondi
}
else // variabile se diverso da sopra esegue sotto
{
fs1LED_RED1=LOW; // esegue comando Led rosso1 spento
digitalWrite (LED_RED1,fs1LED_RED1); // il Led rosso1 rimane spento senza intervallo di tempo
}
}
int leggiTASTO2=digitalRead (TASTO2); // input digitale pin3
if (leggiTASTO2==1) // variabile if - se leggi Tasto2 premuto - valore 1
{
if (fs1LED_RED2==LOW) //verifica lo stato del Led rosso2
{
fs1LED_RED2=HIGH; //esegue comando Led rosso2 acceso
digitalWrite(LED_RED2, fs1LED_RED2);
delay (20000); //intervallo tempo acceso 20 secondi
}
else // variabile se diverso da sopra esegue sotto
{
fs1LED_RED2=LOW; // esegue comando Led rosso2 spento
digitalWrite (LED_RED2,fs1LED_RED2); // il Led rosso2 rimane spento senza intervallo di tempo
}
}
if(LED_RED1=HIGH,LED_RED2=HIGH) // variabile se i due Led rossi sono accesi
{
digitalWrite (LED_RED1=LOW,LED_RED2=LOW); //spegne entrambi Led rossi
delay (1000);
digitalWrite (LED_RED1=HIGH,LED_RED2=HIGH);
delay (1000);
digitalWrite (LED_RED1=LOW,LED_RED2=LOW); //spegne entrambi Led rossi
delay (1000);
digitalWrite (LED_RED1=HIGH,LED_RED2=HIGH);
delay (1000);
digitalWrite (LED_RED1=LOW,LED_RED2=LOW); //spegne entrambi Led rossi
delay (1000);
digitalWrite (LED_RED1=HIGH,LED_RED2=HIGH);
delay (1000);
digitalWrite (LED_RED1=LOW,LED_RED2=LOW); //spegne entrambi Led rossi
delay (1000);
digitalWrite (LED_RED1=HIGH,LED_RED2=HIGH);
delay (1000);
digitalWrite (LED_RED1=LOW,LED_RED2=LOW); //spegne entrambi Led rossi
delay (1000);
}
}