#include <LiquidCrystal_I2C.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo sg90;
Servo sg91;
Servo sg92;
constexpr uint8_t greenLed = 7;
constexpr uint8_t redLed = 6;
constexpr uint8_t servoPin = 8;
constexpr uint8_t ServoPin2 = 9;
constexpr uint8_t ServoPin3 = 2;
String voice;
int error=0;
void HIGH1() {
sg91.write(90);
delay(2000);
}
void LOW1() {
sg91.write(0);
}
void OPEN() {
sg92.write(360);
}
void CLOSE() {
sg92.write(0);
}
void setup() {
Serial.begin(9600);
Serial.println("Working...");
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(12, INPUT);
pinMode(13, INPUT);
pinMode(11, INPUT);
pinMode(10, INPUT);
sg92.attach(ServoPin3);
sg91.attach(ServoPin2);
sg90.attach(servoPin);
sg90.write(0);
lcd.init();
lcd.backlight();
lcd.clear();
}
void loop() {
lcd.setCursor(1, 0);
lcd.print("Hold up the keycard");
while (Serial.available()) {
delay(10);
char c = Serial.read();
if (c == '#')
{
break;
}
voice += c;
}
if (voice.length() > 0) {
Serial.println(voice);
if (voice == "High")
{
HIGH1();
}
else if (voice == "Low") {
LOW1();
}
else if (voice == "Open") {
OPEN();
}
else if (voice == "Close") {
CLOSE();
}
}
voice="";
if (digitalRead(3)==HIGH)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hello Mr Misha");
lcd.setCursor(0, 1);
lcd.print("Door Opened");
sg90.write(180);
digitalWrite(greenLed, HIGH);
delay(3000);
digitalWrite(greenLed, LOW);
sg90.write(0);
lcd.clear();
}
else
{
if(digitalRead(4)==HIGH){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hello Mr Dima");
lcd.setCursor(0, 1);
lcd.print("Door Opened");
sg90.write(150);
digitalWrite(greenLed, HIGH);
delay(3000);
digitalWrite(greenLed, LOW);
sg90.write(0);
lcd.clear();
}
if(digitalRead(5)==HIGH){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Wrong Key Card");
digitalWrite(redLed, HIGH);
delay(3000);
digitalWrite(redLed, LOW);
lcd.clear();
error++;
}
lcd.setCursor(1, 2);
lcd.print("WRONG TRY: ");
lcd.print(error);
}
}