#include <Keypad.h>
const char ROWS = 4;
const char COLS = 4;
char keys[ROWS][COLS] =
{
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
char pinRows[ROWS] = { 10, 11, 12, 13 }; // Pinos conectados a R1, R2, R3, R4
char pinCols[COLS] = { A1, A2, A3, A4 }; // Pinos conectados a C1, C2, C3, C4
Keypad teclado = Keypad(makeKeymap(keys), pinRows, pinCols, ROWS, COLS);
#include <LiquidCrystal.h>
LiquidCrystal lcd(3,4,5,6,7,8);
#include <Servo.h> // chama a lib
Servo motor; // cria objeto "motor"
int posicao = 10; // posicao inicial do
int buzzer = A0;
int frequencia = 2000;
int led = 2;
//==========================================================================
void setup()
{
lcd.begin(16, 2);
motor.attach(9); //inicia o objeto motor pelo comando attach na porta 9
motor.write(0);
pinMode(buzzer, OUTPUT);
pinMode(led, OUTPUT);
}
//===========================================================================
void beep()
{
tone(buzzer, 2000, 100);
delay(10);
noTone(buzzer);
}
//===========================================================================
String digitaCode()
{
lcd.clear();
for (int loop = 0; loop < 2; loop++)
{
lcd.setCursor(2,0);
lcd.print("Insert Code");
delay(500);
lcd.setCursor(0,0);
lcd.print(" Only numbers ");
delay(500);
lcd.setCursor(5,1);
lcd.print("[____]");
lcd.setCursor(6,1);
}
String result = "";
while (result.length() <4)
{
char key = teclado.getKey();
if (key >= '0' && key <= '9')
{
lcd.print('*');
result += key;
}
}
return result;
}
//==========================================================================
void loop()
{
String resultado;
resultado = digitaCode();
if(resultado == "1122" || resultado == "1610" )
{
for (posicao = 0; posicao <= 180; posicao++)
{
motor.write(posicao);
delay(10);
lcd.clear();
lcd.print("Opening Door");
}
lcd.clear();
lcd.print(" Door Open");
delay(5000);
for (posicao = 180; posicao >= 0 ; posicao--)
{
motor.write(posicao);
delay(10);
lcd.clear();
lcd.print("Closing Door");
tone(buzzer, 2000);
delay(1);
noTone(buzzer);
tone(buzzer, 4000);
delay(3);
noTone(buzzer);
tone(buzzer, 1000);
delay(1);
noTone(buzzer);
}
beep();
}
else
{
for (int loop = 0; loop < 3; loop++)
{
lcd.clear();
lcd.print(" Invalid Code");
delay(500);
beep();
digitalWrite(led, HIGH);
lcd.clear();
lcd.print(" Try Again ");
delay(500);
digitalWrite(led, LOW);
}
}
}