#include "Wire.h"
#include "LiquidCrystal_I2C.h"
#include "Keypad.h"
#include <Servo.h>
LiquidCrystal_I2C ecran_lcd(0x27, 16, 2);
const byte clavier_lignes = 4;
const byte clavier_colonnes = 4;
Servo monservo;
int angle=0;
byte lignes_pins[clavier_lignes] = {9, 8, 7 , 6};
byte colonnes_pins[clavier_colonnes] = {5, 4, 3, 2};
char caractere_recu;
char code_secret[4] = {'3', '1', '0', '1'};
char code_recu[4] = {' ', ' ', ' ', ' '};
int indice_code = 0;
int etat_code = 1;
int i = 0;
char clavier_caractere[clavier_lignes][clavier_colonnes] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
Keypad clavier = Keypad(makeKeymap(clavier_caractere), lignes_pins, colonnes_pins, clavier_lignes, clavier_colonnes);
void setup()
{
monservo.attach(11);
ecran_lcd.init();
ecran_lcd.backlight();
ecran_lcd.print("Entrez code");
}
void loop(){
ecran_lcd.setCursor(indice_code, 1);
caractere_recu = clavier.getKey();
if(caractere_recu == '#')
{
ecran_lcd.clear();
indice_code = 0;
ecran_lcd.print("Fermeture");
}
else
{
etat_code = 1;
if(caractere_recu && indice_code < 4)
{
ecran_lcd.print(caractere_recu);
code_recu[indice_code] = caractere_recu;
indice_code = indice_code + 1;
}
else if(indice_code == 4)
{
delay(500);
i = 0;
while(etat_code == 1 && i<4)
{
if(code_recu[i] != code_secret[i])
{
etat_code =0;
}
else
{
i = i + 1;
}
}
if(etat_code == 0)
{
ecran_lcd.clear();
ecran_lcd.print("Code incorrect !");
delay(1000);
indice_code = 0;
ecran_lcd.clear();
ecran_lcd.print("Entrez Code");
}
else
{
ecran_lcd.clear();
ecran_lcd.print("Code correct !");
ecran_lcd.setCursor(indice_code , 1);
ecran_lcd.print("Ouverture !");
monservo.write(180);
}
}
}
if(caractere_recu == '#')
{
ecran_lcd.clear();
indice_code = 0;
ecran_lcd.print("Fermeture");
monservo.write(90);
delay(1500);
ecran_lcd.clear();
ecran_lcd.print("Entrez code");
}
if(caractere_recu == '*')
{
ecran_lcd.print(" ");
indice_code = 0;
}
if(caractere_recu == '*')
{
ecran_lcd.setCursor(0, 1);
ecran_lcd.print(" ");
}
}