for(int indice = 0; indice < 4; indice++) {
codice[5] = digitalRead(pinPulsanti[indice]);
if (codice[indice] == sequenza[indice]) { del pulsante?
digitalWrite(led, HIGH);
}}
scrivi il valore letto fuori dal Array ( l' array di 5 elementi ha gli elementi da 0 a 4) e percui sovvrascrivi la variabile che é memorizzata nella Ram dopo l# array (non so dirti quale é)
Il secondo errore é che scrivi il pulsante in un elemento fisso che alla fine non viene confrontato col array di riferimento.
Altro consiglio metti una funzione a temp ( per esempio 5 secondi entro il quale il codice deve essere inserito senó si svuota il array di ricezione (codice)). In questo modo quando hai sbagliato a inserire il codice riparte dopo 5 secondi da zero.
Questa logica di leggere i pin non funziona come vorresti. Devi immettere il codice in qualche microsecondo perché la lettura dei pulsanti avviene con questa velocitá.
La lettura deve avvenire con una logica diversa.
Devi leggere tutti 4 pulsanti.
Controlli se non sono premuti 2 pulsanti in contemporanea. se sí la lettura viene scartata
Se un pulsante é premuto scrivi il relativo numero nel array pulsanti premuti
Incrementi l' indice dell array pulsanti premuti
Aspetti che il pulsante sia stato rilasciato
Se l'array pulsanti premuti é pieno ( premuti il numero di pulsanti correspondenti alla lunghezza del codice segreto) fai il controllo dell'array pulsanti premuti. Accendi il led e svuoti l' array pulsanti premuti premuta e azzeri l'indice dell'array pulsanti premuti.
Se é passato il tempo utile per immettere la sequenza svuoti l' array pulsanti premuti premuta e azzeri l'indice dell'array pulsanti premuti.
Riparti con questo ciclo.
Ciao Uwe