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);}
}