Problema con la programmazione

Ciao a tutti,
da qualche giorno sto lavorando ad un progetto,durante il quale ho riscontrato dei problemi a livello di programmazione.
Vi spiego meglio: nel mio progetto è previsto che arduino esegua un comando solo dopo aver digitato una combinazione di tre pulsanti (non del computer ma direttamente collegati ad arduino); il fatto è che non so proprio come scrivere per poter realizzare quello che vi ho detto. Questo è quello che sono riuscito a fare (in pratica ho solo configurato i pulsanti :~ ).
Ci sarebbe qualcuno in grado di aiutarmi?
Grazie in anticipo.

int valR; 
int valB;
int valW;
int valV;
int valG;
void setup(){
    pinMode(8,INPUT); // imposto i pin di imput
    pinMode(9,INPUT);
    pinMode(10,INPUT);
     pinMode(11,INPUT);
    pinMode(12,INPUT);

}
void loop(){
  
  valR= digitalRead(8); // leggo i valori dei pulsanti
  valB= digitalRead(9);
  valW= digitalRead(10);
  valV= digitalRead(11);
  valG= digitalRead(12);

  }

I tre pulsanti devono essere premuti contemporaneamente (se fossimo sul PC, ad esempio, potrebbe essere la sequenza CTRL-ALT-CANC) o sequenzialmente?

Puoi creare una variabile di tipo stringa nella quale, se il pulsante è HIGH, scrivi stringa +numero del pulsante HIGH.
Poi metti un ciclo if che controlla se il testo della stringa corrisponde al testo che deve esserci per eseguire l'azione altrimenti non la esegue.(se devono essere premuti in sequenza).
altrimenti hai già salvato gli stati nelle variabili e ti basta aggiungere un ciclo if che controlla se i 3 pulsanti che vuoi sono HIGH e gli altri LOW.

piergiorgiobuttarini:

int valR; 

int valB;
int valW;
int valV;
int valG;
void setup(){
    pinMode(8,INPUT); // imposto i pin di imput
    pinMode(9,INPUT);
    pinMode(10,INPUT);
    pinMode(11,INPUT);
    pinMode(12,INPUT);

}
void loop(){
 
  valR= digitalRead(8); // leggo i valori dei pulsanti
  valB= digitalRead(9);
  valW= digitalRead(10);
  valV= digitalRead(11);
  valG= digitalRead(12);

}

Ok, ti sei salvato i valori degli ingressi nelle rispettive variabili.
Ora cosa vorresti fare? Quali di queste variabili devono essere HIGH e quali LOW?
I pulsanti devono essere premuti in sequenza, o contemporaneamente?

Grazie per le risposte.
I pulsanti devono essere premuti in sequenza e sono tutti LOW

Ok, sono tutti LOW, e quando li premi vanno HIGH? Hai previsto delle resistenze di pulldown?
Qual'è la sequanza che ti serve ?
Hai un tempo massimo tra la pressione di un tasto e l'altro della sequenza?
Oppure premi il primo tasto ora, il secondo fra 20 minuti ed il terzo fra 6 ore ?

Diciamo che una cosa del genere (è uno schema logico, non codice funzionante) potrebbe andare:

if button1==high {
    stato = 1
    aspetta 0,5 secondi
    if stato==1 e button2==high {
        stato = 2
        aspetta 0,5 secondi
        if stato==2 e button3==high {
            stato=0
            eseguo il mio comando
        }  else  {
       stato=0
       }
    } else  {
       stato=0
    }
} else  {
   stato=0
}

In realtà quello che vorrei fare è creare un array con dentro la combinazione dei tasti che ho premuto il problema è che quando premo un tasto arduino lo legge come HIGH per molto tempo (circa 2 secondi anche con i pulldown) e non so come fare =(.

Arduino legge HIGH per, circa, il tempo che il tasto è premuto.
Se hai Arduino UNO ha un clock di 16 MHz (16x106- 16 milioni di operazioni al secondo)

Se hai uno sketch, faccelo vedere, non siamo ancora dotati di televeggenza.
Così possiamo aiutarti su quello che stai facendo, e non andando a tentativi sperando di capire che problema hai e cosa vuoi fare.
Più informazioni fornisci, e meglio è per te: potrai avere una risposta esauriente e tempestiva.
Qui nessuno ruba niente, anche perché arduino si basa sulla condivisione, essendo open-hardware ed open-source.

Avrai messo tu qualche delay(...)

Vuoi che si avvii solo dopo aver premuto la corretta sequenza.
Tu conviene mettere alla fine del Setup un richiamo ad una funzione che attende la sequenza.
Così passerà al Loop solo dopo aver premuto quei tasti nel modo previsto.

la funzione puoi costruirla in modo semplice, basta attendere che venga premuto il primo, poi il secondo - eventualmente con un timeot - e poi se il secondo è corretto attendere il terzo altrimenti ricomincia, se anche il terzo è corretto esci dalla funzione altrimenti ricomincia.
Così puoi anche contare gli errori e bloccare tutto dopo il quinto errore.
O altro... insomma dipende da cosa devi fare.