#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
const uint8_t row = 4;
const uint8_t column = 4;
char keys[row][column] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
uint8_t columns[column] = {5, 4, 3, 2};
uint8_t rows[row] = {9, 8, 7, 6};
Keypad keypad = Keypad( makeKeymap(keys), rows, columns, row, column);
LiquidCrystal_I2C lcd(0x27, 16 ,2);
Servo monCerveau;
int redLed = 13;
int greenLed = 12;
String code = "4568";
String attempt = "";
int lenght = 0;
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Password : ");
monCerveau.attach(10);
monCerveau.write(0);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
digitalWrite(redLed, LOW);
digitalWrite(greenLed, LOW);
}
void loop() {
char key = keypad.getKey();
if(key != NO_KEY){
attempt += key;
lcd.setCursor(lenght,1);
lcd.print("*");
++lenght;
}
if(lenght == 4){
lcd.clear();
lcd.setCursor(0,0);
if(attempt == code){
digitalWrite(greenLed, HIGH);
lcd.print("Code Correct");
//Tourner le cerveau moteur de 180 apres le retourner a 0
for(int i = 0 ; i <= 180 ; i++){
monCerveau.write(i);
delay(15);
}
delay(2000);
for(int i = 180 ; i >= 0 ; i--){
monCerveau.write(i);
delay(15);
}
delay(1000);
digitalWrite(greenLed, LOW);
}else{
digitalWrite(redLed, HIGH);
lcd.setCursor(0, 0);
lcd.print("Code Incorrect");
delay(3000);
digitalWrite(redLed, LOW);
}
attempt = "";
lenght = 0;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Password : ");
}
}