//Andrey Celestino de Oliveira 36286
//Augusto Elisio Marques Teles 37324
#include <Servo.h> //Coloca a biblioteca do servo
#include <LiquidCrystal_I2C.h> //Coloca a biblioteca do LCD
#define trig1 2 //Pino que lê a disância
#define echo1 5 //Pino que manda a distância (tem q ser pwm)
#define trig2 4
#define echo2 6
int sense1 = 0;
int sense2 = 0;
Servo servo1;
LiquidCrystal_I2C lcd1(0x27, 16,2);
LiquidCrystal_I2C lcd2(0x28, 16,2);
void setup() {
pinMode(trig1, OUTPUT);
pinMode(echo1, INPUT);
pinMode(trig2, OUTPUT);
pinMode(echo2, INPUT);
servo1.attach(3);
lcd1.init();
lcd2.init();
//Serial.begin(9600);
}
void loop() {
// Inicia uma nova medição:
digitalWrite(trig1, HIGH);
digitalWrite(trig2, HIGH);
delayMicroseconds(10);
digitalWrite(trig1, LOW);
digitalWrite(trig2, LOW);
// Lê o resultado:
float duration1 = pulseIn(echo1, HIGH);
float duration2 = pulseIn(echo2, HIGH);
lcd1.setBacklight(HIGH);
lcd2.setBacklight(HIGH);
//painel 1
if(duration1 / 58 <= 200){ //se tem um veiculo a até 2 metros de distância
lcd1.setCursor(3, 0);
lcd1.print("DIMINUA A");
lcd1.setCursor(3, 1);
lcd1.print("VELOCIDADE");
}
else{
lcd1.setCursor(3, 0);
lcd1.print(" PERCURSO"); //usando espaços pro lcd não ficar piscando, porem um clear tambem funcionaria
lcd1.setCursor(3, 1);
lcd1.print(" LIVRE ");
}
//painel 2
if(duration2 / 58 > 200 && duration1 / 58 > 200){
lcd2.setCursor(0, 0);
lcd2.print("PERCURSO");
lcd2.setCursor(0, 1);
lcd2.print("LIVRE ");
}
if(duration2 / 58 <= 200 && duration1 / 58 <= 200){
lcd2.setCursor(0, 0);
lcd2.print("CANCELA ");
lcd2.setCursor(0, 1);
lcd2.print("SERA ABERTA");
}
if(duration2 / 58 <= 200 && duration1 / 58 > 200){
lcd2.setCursor(0, 0);
lcd2.print("CANCELA ");
lcd2.setCursor(0, 1);
lcd2.print("ABERTA ");
}
}