#include <LiquidCrystal.h>
#include <Keypad.h>
#include <Servo.h>
#include <Wire.h>
int pmin = 0;
int pmax = 1023;
int sens = A0;
int senv = 0;
#define pass 6
int sig;
char Data[pass];
char Master[pass] = "69420";
byte datacount = 0, mastercount = 0;
bool pok;
char custkey;
int chinanumbaone = 0;
int muricanumbazero = 0;
boolean japasso = false;
boolean botaomaldito = false;
boolean selecoff = false;
boolean selecoff1 = false;
boolean botaomaldito2 = false;
bool murica = false;
bool murica1 = false;
bool murica2 = false;
bool desligasaporra = false;
bool abrido = false;
bool tranca = false;
int le1 = 33;
LiquidCrystal lcd(13,12,11,10,9,8);
byte p1 [8]={
B00000,
B01110,
B11011,
B11111,
B11111,
B01110};
byte p2 [8]={
B00000,
B01111,
B11010,
B11100,
B11110,
B01111};
byte trncd [8]={
B00100,
B01010,
B01010,
B11111,
B11111,
B11111};
byte dstrcd [8]={
B00100,
B01010,
B01000,
B11111,
B11111,
B11111};
int pos = 0;
int bot1 = 35;
int bot2 = 34;
const byte pV=4;
const byte pH=4;
char teca[pH][pV]={
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte PVV[pV]={24,25,26,27};
byte PVH[pH]={28,29,30,31};
Keypad tecb = Keypad(makeKeymap(teca), PVV, PVH, pV, pH );
Servo boga;
void setup(){
int butaliga = digitalRead(bot1);
int butsel = digitalRead(bot2);
pinMode(bot1, INPUT);
pinMode(bot2, INPUT);
pinMode(33, OUTPUT);
boga.attach(22);
lcd.begin(16,2);
lcd.createChar(1,p1);
lcd.createChar(2,p2);
lcd.createChar(3,trncd);
lcd.createChar(4,dstrcd);
digitalWrite(bot1, HIGH);
digitalWrite(bot2, HIGH);
Serial.begin(9600);
Serial.println("Pressione uma tecla");
}
void loop(){
if(!japasso){ lcd.clear();
char tec = tecb.getKey();
if (tec) {
Serial.println(tec);
lcd.setCursor(0,0);
lcd.write(1);
int b;
for (int b=0; b<=15; b++){
if(b % 2 == 0){
lcd.scrollDisplayRight();
lcd.setCursor(0,0);
lcd.write(1);
boga.write(0);
delay (300);
} else {
lcd.scrollDisplayRight();
lcd.setCursor(0,0);
lcd.write(2);
boga.write(90);
delay(300);
}
if (b == 15 || tec=='A') {
lcd.clear();
japasso = true;
}}
}
}
if (!desligasaporra){
if (japasso == true){
int butaliga = digitalRead(bot1);
int butsel = digitalRead(bot2);
delay(20);
digitalWrite(le1, HIGH);
lcd.setCursor(1,0);
lcd.print("bom dia");
if (abrido==false){
lcd.setCursor(12,0);
lcd.write(3);
} else { lcd.setCursor(12,0); lcd.write(4);}
delay(20);
if(!botaomaldito){
lcd.setCursor(0,1);
lcd.print("Pressione B");
delay(20);
}
if (butaliga==0) {
botaomaldito = true;
chinanumbaone++;
lcd.clear();
delay(10);
switch (chinanumbaone){
case 1:
lcd.clear();
lcd.setCursor(1,1);
lcd.print("> Entrar ");
delay(100);
break;
case 2:
lcd.clear();
lcd.setCursor(1,1);
lcd.print("> Selecionar ");
delay(100);
break;
case 3:
lcd.clear();
lcd.setCursor(1,1);
lcd.print("> Trancar ");
delay(100);
break;
case 4:
chinanumbaone = 0;
break;
break;
}}
if (butsel == LOW&&chinanumbaone==3){
boga.write(90); abrido = false; delay(200); tranca = false;}
if (butsel == LOW&&chinanumbaone==2){
selecoff1 = true;
desligasaporra = true;
lcd.clear();
}
if (butsel == LOW&&chinanumbaone==1){
selecoff = true;
desligasaporra = true;
lcd.clear();
}}}
if(selecoff1 == true) {
lcd.setCursor(1,0);
lcd.print("modo:");
delay(120);
int butaliga = digitalRead(bot1);
int butsel = digitalRead(bot2);
if (butaliga==0){
muricanumbazero++;
lcd.clear();
delay (40);
}
switch(muricanumbazero){
case 1:
lcd.clear();
lcd.setCursor(0,1);
lcd.print("teste servo M");
delay(100);
break;
case 2:
lcd.clear();
lcd.setCursor(0,1);
lcd.print("teste servo A");
delay(100);
break;
case 3:
lcd.clear();
lcd.setCursor(0,1);
lcd.print("voltar");
delay(100);
break;
case 4:
muricanumbazero = 0;
break;
}
int zaza = 0;
if(butsel == LOW&&muricanumbazero==1&&abrido==true){
murica=true;
}
if(butsel == LOW&&muricanumbazero==2&&abrido==true){
murica1=true;
}
if(butsel == LOW&&muricanumbazero==3){
murica2=true;
}
if (murica2==true){selecoff1=false; selecoff=false; chinanumbaone=0; muricanumbazero=0; murica=false; murica1=false;
murica2=false; lcd.clear(); desligasaporra = false; botaomaldito = false; return;}
if(murica==true){
while (muricanumbazero==1){
senv = analogRead (sens);
senv = map(senv, pmin, pmax, 0, 180);
boga.write(senv);
Serial.println(senv);
delay(106);
zaza++;
if (zaza>=100){muricanumbazero==2; boga.write(0); murica=false; break;}
}
}
if(murica1==true){
boga.write(0); delay(600); boga.write(180); delay(806); boga.write(0); delay(500); boga.write(45); delay(506);
boga.write(90); delay(506); boga.write(135); delay(506); boga.write(180); delay(506);
boga.write(0); muricanumbazero==0; murica1=false;
}
}
if(selecoff == true){
lcd.setCursor(0,0);
lcd.print("Senha:");
custkey = tecb.getKey();
if (custkey){
Data[datacount] = custkey;
lcd.setCursor(datacount,1);
lcd.print(Data[datacount]);
datacount++;
}
if(datacount == pass-1){
lcd.clear();
if(!strcmp(Data, Master)){
lcd.print("certo");
abrido = true;
boga.write(0);
delay(500);
lcd.clear();
selecoff1=false; selecoff=false; chinanumbaone=0; muricanumbazero=0; murica=false; murica1=false;
murica2=false; lcd.clear(); desligasaporra = false; botaomaldito = false; return;
return;
}
else{
lcd.print("errado");
delay(1000);
lcd.clear();
clearData();
}
lcd.clear();
clearData();
}
}
}
void clearData() {
while(datacount !=0){
Data[datacount--] = 0;
}
selecoff1=false; selecoff=false; chinanumbaone=0; muricanumbazero=0; murica=false; murica1=false;
murica2=false; lcd.clear(); desligasaporra = false; botaomaldito = false;
return;
}