//Estacionamento
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27, 20, 4);
//sensores das vagas
#define sensorVaga1 12
#define sensorVaga2 13
#define sensorVaga3 9
#define sensorVaga4 10
//indicadores de vagas
#define vd1vm1 32
#define vd2vm2 33
#define vd3vm3 25
#define vd4vm4 26
int livre = 0;
int ocupada = 0;
void setup()
{
lcd.init();
lcd.backlight();
pinMode(sensorVaga1, INPUT);
pinMode(sensorVaga2, INPUT);
pinMode(sensorVaga3, INPUT);
pinMode(sensorVaga4, INPUT);
pinMode(vd1vm1, OUTPUT);
pinMode(vd2vm2, OUTPUT);
pinMode(vd3vm3, OUTPUT);
pinMode(vd4vm4, OUTPUT);
//máscara de texto
lcd.setCursor(0, 0);
lcd.print("Vaga 1: ");
lcd.setCursor(0, 1);
lcd.print("Vaga 2: ");
lcd.setCursor(0, 2);
lcd.print("Vaga 3: ");
lcd.setCursor(0, 3);
lcd.print("Vaga 4: ");
}
void loop()
{
if(digitalRead(sensorVaga1) == 0)
{
digitalWrite(vd1vm1, LOW);
lcd.setCursor(9, 0);
lcd.print("Livre! ");
livre = livre + 1;
ocupada = ocupada - 1;
}
else
{
digitalWrite(vd1vm1, HIGH);
lcd.setCursor(9, 0);
lcd.print("Ocupada! ");
ocupada = ocupada + 1;
livre = livre - 1;
}
if(digitalRead(sensorVaga2) == 0)
{
digitalWrite(vd2vm2, LOW);
lcd.setCursor(9, 1);
lcd.print("Livre! ");
livre = livre + 1;
ocupada = ocupada - 1;
}
else
{
digitalWrite(vd2vm2, HIGH);
lcd.setCursor(9, 1);
lcd.print("Ocupada! ");
ocupada = ocupada + 1;
livre = livre - 1;
}
if(digitalRead(sensorVaga3) == 0)
{
digitalWrite(vd3vm3, LOW);
lcd.setCursor(9, 2);
lcd.print("Livre! ");
livre = livre + 1;
ocupada = ocupada - 1;
}
else
{
digitalWrite(vd3vm3, HIGH);
lcd.setCursor(9, 2);
lcd.print("Ocupada! ");
ocupada = ocupada + 1;
livre = livre - 1;
}
if(digitalRead(sensorVaga4) == 0)
{
digitalWrite(vd4vm4, LOW);
lcd.setCursor(9, 3);
lcd.print("Livre! ");
livre = livre + 1;
ocupada = ocupada - 1;
}
else
{
digitalWrite(vd4vm4, HIGH);
lcd.setCursor(9, 3);
lcd.print("Ocupada! ");
ocupada = ocupada + 1;
livre = livre - 1;
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("Livres: ");
lcd.setCursor(10,0);
lcd.print(livre);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("Ocupadas: ");
lcd.setCursor(10,0);
lcd.print(ocupada);
delay(1000);
}
SENSORES DAS VAGAS
INDICADOR DE VAGA LIVRE/OCUPADA