#include <LiquidCrystal_I2C.h>
uint8_t pacman[8] = {
0b00000,
0b00000,
0b01110,
0b11011,
0b11111,
0b01110,
0b00000,
0b00000
};
uint8_t pacmanOpen[] = {
0b00000,
0b00000,
0b01110,
0b11011,
0b11100,
0b01110,
0b00000,
0b00000
};
uint8_t dot[] = {
0b00000,
0b00000,
0b00000,
0b00110,
0b00110,
0b00000,
0b00000,
0b00000
};
int LED = 12;
int LED1 = 13;
int contador=0;
int detector=0;
const int Trigger = 2;
const int Echo = 3;
LiquidCrystal_I2C lcd(0x27,20,4);
void setup()
{
Serial.begin(9600);
pinMode(Trigger, OUTPUT);
pinMode(Echo, INPUT);
digitalWrite(Trigger, LOW);
lcd.init();
lcd.backlight();
lcd.createChar(1, pacman);
lcd.createChar(2, dot);
lcd.begin(20, 4);
lcd.setCursor(8, 2);
lcd.print("");
}
void loop()
{
long t;
long d;
digitalWrite(Trigger, HIGH);
delayMicroseconds(10);
digitalWrite(Trigger, LOW);
t = pulseIn(Echo, HIGH);
d = t/59;
Serial.print("Distancia: ");
Serial.print(d);
Serial.print("cm");
Serial.println();
delay(100);
if(d>=1 && d<=100){
detector++;
}
else{detector=0;}
if(detector==1){
contador++;
}
lcd.setCursor(9,1);
lcd.print(contador);
if(contador == 31)
{
lcd.setCursor(3,1);
while(true)
{
for (int i = 3; i < 16; i++) {
lcd.setCursor(i, 3);
lcd.print("\1");
for (int j = i + 1; j < 16; j++) {
lcd.setCursor(j, 3);
lcd.print("\2");
}
lcd.createChar(1, pacman);
delay(200);
lcd.createChar(1, pacmanOpen);
delay(200);
lcd.setCursor(i, 3);
lcd.setCursor(3, 3);
lcd.print(" AFORO LLENO");
lcd.setCursor(1, 0);
lcd.print("MAXIMO DE PERSONAS");
}
digitalWrite(LED, HIGH);
digitalWrite(LED1, HIGH);
}}}