int sequenza[4] = {button3, button1, button4, button2};
non Ti fa un array con i contenuti delle variabili button1 fino button4.
Perché non leggi i stati dei pulsanti direttamente nel array?
sequenza[0]= digitalRead(button1);
o meglio leggi lo stato del pulsante durante il controllo mettendo i Pin dei 4 pulsanti in un altro array:
if (codice[ i ] == digitalRead(button[ i ])) {
Ciao Uwe