buzzer ne s'arrete pas !!

mon probleme :
en entrant un mot de passe incorrect 3 fois la sirene se declenche
mais je ne peux plus entrer le mot de passe correct une autre fois
aidez moi SVP

#include<LiquidCrystal.h>
#include <Password.h>
#include <Keypad.h>

Password password = Password( “1234” );

const byte ROWS = 4;
const byte COLS = 4;

char keys[ROWS][COLS] = {
{‘1’,‘2’,‘3’,‘A’},{‘4’,‘5’,‘6’,‘B’},{‘7’,‘8’,‘9’,‘C’},{’*’,‘0’,’#’,‘D’}
};
byte rowPins[ROWS] = {37,39,41,43};
byte colPins[COLS] = {47,49,51,53};

// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int calibrationTime = 0;

long unsigned int lowIn;
int passwd_pos= 11;

int backLight =13;
boolean lockLow = true;
boolean takeLowTime;
int i= 0;
int pirPin = 6; //the digital pin connected to the PIR sensor’s output
int ledPin = 7;
int alarmStatus = 0;
int alarmActive =0;
int speaker= 8;
int nb= 0;
const int bouton = 10;//le bouton est connecté à la broche 10 de la carte Adruino
int etatBouton;//variable qui enregistre l’état du bouton
LiquidCrystal lcd(12,11,5,4,3,2);

//SETUP
void setup(){
pinMode(backLight, OUTPUT);
analogWrite(backLight, 150);
lcd.begin(16, 2);
Serial.begin(9600);
pinMode(speaker, OUTPUT);
pinMode(bouton, INPUT); //le bouton est une entrée
etatBouton = LOW;
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(pirPin, LOW);
etatBouton = digitalRead(bouton); //Rappel : bouton = 9
displayCodeEntryScreen();
keypad.addEventListener(keypadEvent);
}

//LOOP
void loop()
{
keypad.getKey();

if(alarmActive == 1)
{
if(etatBouton == LOW) //test si le bouton a un niveau logique HAUT
{
digitalWrite(speaker,LOW);
}
else //test si le bouton a un niveau logique différent de HAUT (donc BAS)
{
keypad.addEventListener(keypadEvent);

}
}
}

////////////////////Fontions/////////////////
void keypadEvent(KeypadEvent eKey)
{

switch (keypad.getState())
{
case PRESSED:
if (passwd_pos - 11 >= 5)
{
displayCodeEntryScreen();
}
lcd.setCursor((passwd_pos++),0);

switch (eKey){
case ‘D’:
passwd_pos = 11;
checkPassword();
break;

case ‘C’:
alarmActive = 0 ;
alarmStatus = 0 ;

password.reset();
lcd.clear();
lcd.print(“Password Reset”);
delay (1000);
passwd_pos = 11;
displayCodeEntryScreen();
break;

default:
password.append(eKey);
lcd.print("*");
}
}
}

void checkPassword()
{
if (password.evaluate())
{
if(alarmActive == 0 && alarmStatus == 0)
{
activate();
}
else if( alarmActive == 1 || alarmStatus == 1)

{
deactivate();
}
}
else
{
invalidCode();

nb++;
}
}

void invalidCode()
{
password.reset();
alarmStatus = 1;
alarmActive=1;
lcd.clear();
lcd.setCursor(2,0);
lcd.print(“CODE INVALIDE”);
delay(1000);
lcd.clear();
displayCodeEntryScreen();
if(nb>=2)
{
alarmTriggered();
keypad.addEventListener(keypadEvent);
}

}

void activate()
{ displayCodeEntryScreen();
delay(5000);
alarmStatus = 1;
alarmActive = 1;
lcd.clear();
lcd.setCursor(2,0);
lcd.print(“ACTIVATION”);
password.reset();
delay(1000);
lcd.clear();
displayCodeEntryScreen();

}

void deactivate()
{
alarmStatus = 0;
lcd.clear();
lcd.setCursor(1,0);
lcd.print(“DESACTIVATION”);
digitalWrite(speaker, LOW);
alarmActive = 0;
password.reset();
delay(2000);
displayCodeEntryScreen();
}

void displayCodeEntryScreen()
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Entrer PIN:”);
}

void alarmTriggered()

{
for( i=0;i<100;i++)
{ digitalWrite(speaker, HIGH);}
}

Bonjour ? !

code compliqué à lire aucun commentaire... pas dans une fenêtre code...

A quoi sers le bouton sur la broche 10? il n'est lu que dans le setup d’ailleurs donc c'est l’état au démarrage du arduino!

que se passe t'il dans la boucle principale void loop si alarmActive == 0 ?

puisque tu as un lcd rajoute des print.lcd() pour vérifier que ton programme passe bien par la ou il devrait passer..et si les variable contiennent bien ce qu'elle devraient contenir