Programma Arduino UNO per Buzzer segnatempo Paintball

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);


 }
 }

Buonasera,
prima di tutto, essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ...

... poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

Grazie.

Guglielmo

Grazie per i suggerimenti, mi sono anche presentato agli altri nella sezione apposita.

Ho riveduto lo Sketch e adesso dovrebbe essere finito, spero di poterlo testare lunedi, nel frattempo lo allego sotto e mi aspetto suggerimenti.

//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);
 
int i=1
  ;while (i<=19)
  {
    i=i+1;
    
  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_GREEN,HIGH);              // attiva Led verde
 delay (180000);
 
 digitalWrite (BUZZER,HIGH);                // attiva Buzzer 3 secondi
 delay (3000);
 }
                                            // fine programma