//MMH
#include <Keypad.h>
#include <LiquidCrystal.h>
#include <Servo.h>
const byte rs = 12, en = 11, d4 = A0, d5 = A1, d6 = A2, d7 = A3, R = 10, G = 13, B = A5, servoPin = 6;
const byte ROWS = 3;
const byte COLS = 3;
const byte code[4] = {1,2,3,4};
byte input[4] = {0,0,0,0};
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
};
byte colPins[COLS] = {5, 4, 3,};
byte rowPins[ROWS] = {9, 8, 7,};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
Servo servo;
void setup()
{
servo.attach(6);
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.print(" ENTER CODE:");
lcd.setCursor(3, 1);
for(int i = 0; i < 4; i++)
{
lcd.println(input[i]);
}
digitalWrite(R, HIGH);
digitalWrite(G, HIGH);
digitalWrite(B, LOW);
servo.write(0);
}
void loop()
{
char key = keypad.getKey();
lcd.setCursor(3, 1);
if (key != NO_KEY && input[0] == 0)
{
blinkYellow();
input[0] = key - 48;
if(input[0] <= 9)
{
for(int i = 0; i < 4; i++)
{
lcd.println(input[i]);
}
}
}
else if(key != NO_KEY && input[1] == 0)
{
blinkYellow();
lcd.setCursor(3, 1);
input[1] = key - 48;
if(input[1] <= 9)
{
for(int i = 0; i < 4; i++)
{
lcd.println(input[i]);
}
}
}
else if(key != NO_KEY && input[2] == 0)
{
blinkYellow();
lcd.setCursor(3, 1);
input[2] = key - 48;
if(input[2] <= 9)
{
for(int i = 0; i < 4; i++)
{
lcd.println(input[i]);
}
}
}
else if(key != NO_KEY && input[3] == 0)
{
blinkYellow();
lcd.setCursor(3, 1);
input[3] = key - 48;
if(input[3] <= 9)
{
for(int i = 0; i < 4; i++)
{
lcd.println(input[i]);
}
}
}
if(input[0] == code[0] && input[1] == code[1] && input[2] == code[2] && input[3] == code[3] )
{
allowed();
}
else if(input != code && input[3] > 0)
{
lcd.setCursor(0, 1);
lcd.println(" D E N I E D ");
}
}
void allowed()
{
servo.write(90);
digitalWrite(R, HIGH);
digitalWrite(G, LOW);
digitalWrite(B, HIGH);
delay(750);
lcd.setCursor(0, 1);
lcd.println(" G R A N T E D ");
delay(5000);
servo.write(0);
digitalWrite(R, HIGH);
digitalWrite(G, HIGH);
digitalWrite(B, LOW);
lcd.setCursor(0, 0);
lcd.print(" ENTER CODE: ");
lcd.setCursor(1, 1);
lcd.print(" ");
for(int i = 0; i < 4; i++)
{
input[i] = 0;
}
lcd.setCursor(3, 1);
for(int i = 0; i < 4; i++)
{
lcd.println(input[i]);
}
}
void blinkYellow()
{
digitalWrite(R, LOW);
digitalWrite(G, LOW);
digitalWrite(B, HIGH);
delay(100);
digitalWrite(R, HIGH);
digitalWrite(G, HIGH);
digitalWrite(B, LOW);
}