//vars
const int led_blue = 13; //para mostra que tem gente
const int led_green = 12; //simular a ação do motor
const int led_pink = 11; //mostrar que tem gente
const int pir_int = 7; //sensor que fica dentro do banheiro
const int pir_ext = 6; //sensor que fica fora para a entrada
bool PIR_INT, PIR_EXT;
int CHAVE = 0; //para ver se tem gente e trancar a porta
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup(){
//config os pin
pinMode(led_blue, OUTPUT);
pinMode(led_green, OUTPUT);
pinMode(led_pink, OUTPUT);
pinMode(pir_int, INPUT);
pinMode(pir_ext, INPUT);
//LCD inicializar
lcd.init();
lcd.backlight();
}
void loop(){
PIR_INT = digitalRead(pir_int);
PIR_EXT = digitalRead(pir_ext);
PIR_EXTERNO();
PIR_INTERNO();
}
void PIR_EXTERNO(){
if(PIR_EXT == true){
lcd.clear();
if(CHAVE == 1){
digitalWrite(led_pink, HIGH);
LED_TRANCADO();
delay(7 * 1000);
lcd.clear();
}else if(CHAVE == 0){
digitalWrite(led_green, HIGH);
digitalWrite(led_blue, HIGH);
LED_ABRINDO();
delay(7 * 1000);
CHAVE = 1;
}
}else{
digitalWrite(led_green, LOW);
digitalWrite(led_pink, LOW);
LED_FECHADA();
}
}
void PIR_INTERNO(){
if (PIR_INT == true and CHAVE == 1){
lcd.clear();
digitalWrite(led_green, HIGH);
digitalWrite(led_blue, LOW);
LED_ABRINDO();
delay(7 * 1000);
CHAVE = 0;
}
}
void LED_TRANCADO(){
//esta trancada
lcd.setCursor(2, 0);
lcd.print("a porta esta");
lcd.setCursor(3, 1);
lcd.print("trancanda!");
}
void LED_ABRINDO(){
//esta abrindo a porta
lcd.setCursor(2, 0);
lcd.print("a porta esta");
lcd.setCursor(4, 1);
lcd.print("aberta!");
}
void LED_FECHADA(){
//a porta esta fechada mais não tem ninguem
lcd.setCursor(2, 0);
lcd.print("a porta esta");
lcd.setCursor(4, 1);
lcd.print("fechada!");
}