////////////// Librerias //////////
#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>
#include <Wire.h>
/////// CONFIGURACIONES /////////7
LiquidCrystal_I2C lcdentrada(0X27,16,2);
LiquidCrystal_I2C lcdsalidada(0X26,16,2);
Servo servoEntrada;
Servo servoSalida;
int Cantidad = 12;
int Paso = 1;
/////////// FUNCION PARA iNFRARROJO 01 DE ENTRADA ////
unsigned long TA01 = 0;
int estado01 =0;
int IRE01 = 0;
int EAE01=0;
int IR01Entrada (int pin){
pinMode(pin, INPUT_PULLUP);
if ((millis()-TA01)>=500) {
TA01=millis();
if (digitalRead(pin) ==LOW){ estado01 = 1; }
else { estado01 = 0; }
return estado01;
}
}
/////////// FUNCION PARA iNFRARROJO 02 DE ENTRADA ////
unsigned long TA02 = 0;
int estado02 =0;
int IRE02 = 0;
int EAE02=0;
int IR02Entrada (int pin){
pinMode(pin, INPUT_PULLUP);
if ((millis()-TA02)>=500) {
TA02=millis();
if (digitalRead(pin) ==LOW){ estado02 = 1; }
else { estado02 = 0; }
return estado02;
}
}
/////////// FUNCION PARA iNFRARROJO 01 DE ENTRADA ////
unsigned long TA03 = 0;
int estado03 =0;
int IRS01 = 0;
int EAS01=0;
int IR01Salida (int pin){
pinMode(pin, INPUT_PULLUP);
if ((millis()-TA03)>=500) {
TA03=millis();
if (digitalRead(pin) ==LOW){ estado03 = 1; }
else { estado03 = 0; }
return estado03;
}
}
/////////// FUNCION PARA iNFRARROJO 01 DE ENTRADA ////
unsigned long TA04 = 0;
int estado04 =0;
int IRS02 = 0;
int EAS02=0;
int IR02Salida (int pin){
pinMode(pin, INPUT_PULLUP);
if ((millis()-TA04)>=500) {
TA04=millis();
if (digitalRead(pin) ==LOW){ estado04 = 1; }
else { estado04 = 0; }
return estado04;
}
}
void setup() {
servoEntrada.attach(2);
servoSalida.attach(3);
lcdentrada.init();
lcdsalidada.init();
lcdentrada.clear();
lcdsalidada.clear();
lcdentrada.setCursor(0,0);
lcdsalidada.setCursor(0,0);
lcdentrada.backlight();
lcdsalidada.backlight();
lcdentrada.print("Inicializando");
lcdsalidada.print("Inicializando");
servoEntrada.write(0);
servoSalida.write(0);
delay(2000);
lcdentrada.clear();
lcdsalidada.clear();
}
void loop() {
IRE01 =IR01Entrada(41);
IRE02 =IR01Entrada(39);
IRS01 =IR01Salida(42);
IRS02 =IR02Salida(20);
/// ENTRADA
if ((IRE01 == 1) &&(IRE02 == 0)&& (Paso == 1)){
lcdentrada.clear();
lcdentrada.setCursor(0,0);
lcdentrada.print("Bienvenido");
lcdentrada.setCursor(0,1);
lcdentrada.print(Cantidad + String(" Parq. disp. "));
servoEntrada.write(90);
Paso =2;
}
if ((IRE01 == 0) &&(IRE02 == 1)&& (Paso == 2)){
Cantidad = Cantidad - 1;
Paso =3;}
if ((IRE01 == 0) &&(IRE02 == 0)&& (Paso == 3)){
servoEntrada.write(0);
lcdentrada.setCursor(0,1);
lcdentrada.print(Cantidad + String(" Parq. disp. "));
Paso =1;
lcdentrada.clear();
}
/// SALIDA
if ((IRE01 == 0) &&(IRE02 == 1)&& (Paso == 1)){
lcdsalidada.clear();
lcdsalidada.setCursor(0,0);
lcdsalidada.print("Feliz Viaje");
lcdsalidada.setCursor(0,1);
lcdsalidada.print(Cantidad + String(" Parq. disp. "));
servoEntrada.write(90);
Paso =4;
}
if ((IRE01 == 1) &&(IRE02 == 0)&& (Paso == 4)){
Cantidad = Cantidad + 1;
Paso =5;}
if ((IRE01 == 0) &&(IRE02 == 0)&& (Paso == 5)){
servoEntrada.write(0);
lcdsalidada.setCursor(0,1);
lcdsalidada.print(Cantidad + String(" Parq. disp. "));
Paso =1;
lcdsalidada.clear();
}
}