const int P1 = 2; // Broche pour le bouton P1
const int P2 = 3; // Broche pour le bouton P2
const int L1 = 13; // Broche pour la LED L1

#define relache HIGH
#define appui LOW

#define nochange 0
#define appuiP1 1
#define relacheP1 2
#define appuiP2 3
#define relacheP2 4
#define toucheP1 digitalRead(P1)
#define toucheP2 digitalRead(P2)

byte sequence[] = {appuiP1, relacheP1, appuiP1, appuiP2, relacheP2, relacheP1}; // Séquence à détecter
int longeurSequence;
int seqIndex = 0; // Index de la séquence à vérifier
int touche;

void setup() {//*************************setup************************
  Serial.begin(9600);
  pinMode(P1, INPUT_PULLUP);
  pinMode(P2, INPUT_PULLUP);
  pinMode(L1, OUTPUT);
  longeurSequence = sizeof(sequence);
}
void loop() {//**************************loop***********************
   int time_key_read = millis();
   static int last_key_read ;
   touche=nochange;
   if (time_key_read - last_key_read >= 100) {                         // Vérifier si au moins 100ms se sont écoulées depuis la dernière lecture du bouton
          last_key_read = time_key_read;
          touche = scanButtons();
   }
  if(touche != nochange){ 
        Serial.print(touche);
        Serial.print(" ");
        Serial.println(seqIndex);
        if (touche != sequence[seqIndex]) {
               seqIndex = 0; 
        } else {
               seqIndex++;
        }
      
        if(seqIndex == longeurSequence){
                        Serial.print("ok ");
                        digitalWrite(L1, HIGH);
                        delay(3000);
                        digitalWrite(L1, LOW);
                        seqIndex=0;
        }
      
  }
  
}

int scanButtons() {   
  static int lastStateP1 = 1;
  static int lastStateP2 = 3;
  int currentStateP1 = toucheP1;
  int currentStateP2 = toucheP2;
  
  if (currentStateP1 != lastStateP1) {    //changement etat p1 
    lastStateP1 = currentStateP1;
    return currentStateP1 == appui ? appuiP1 : relacheP1;
  }
  if (currentStateP2 != lastStateP2) {     //changement etat p2 
    lastStateP2 = currentStateP2;
    return currentStateP2 == appui ? appuiP2 : relacheP2;
  }
  return nochange;                                // Rien n'a changé
}
Appui sur P1 P2 ou sur clavier touche numerique 1 et 2
Sequence pour allumer Led appuiP1, relacheP1, appuiP1, appuiP2, relacheP2, relacheP1