// Exercício 7
// Breno Correia Lociks
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
Servo servo1;
LiquidCrystal_I2C lcd1(0x27,16,2);
LiquidCrystal_I2C lcd2(0x26,16,2);
#define PIN_ECHO1 8
#define PIN_TRIG1 9
#define PIN_ECHO2 2
#define PIN_TRIG2 3
char detectou1 = false;
char detectou2 = false;
char limpou1 = false;
char limpou2 = false;
char limpou3 = false;
void setup() {
pinMode(PIN_TRIG1, OUTPUT);
pinMode(PIN_ECHO1, INPUT);
pinMode(PIN_TRIG2, OUTPUT);
pinMode(PIN_ECHO2, INPUT);
lcd1.init();
lcd1.setBacklight(HIGH);
lcd2.init();
lcd2.setBacklight(HIGH);
servo1.attach(5);
servo1.write(0);
}
void loop() {
digitalWrite(PIN_TRIG1, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG1, LOW);
int duration1 = pulseIn(PIN_ECHO1, HIGH);
digitalWrite(PIN_TRIG2, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG2, LOW);
int duration2 = pulseIn(PIN_ECHO2, HIGH);
int distCM1 = duration1 / 58;
int distCM2 = duration2 / 58;
if(distCM1 > 200 && detectou1 == false && limpou1 == false){
lcd1.clear();
lcd1.setCursor(4,0);
lcd1.print("PERCURSO");
lcd1.setCursor(6,1);
lcd1.print("LIVRE");
lcd2.clear();
lcd2.setCursor(4,0);
lcd2.print("PERCURSO");
lcd2.setCursor(6,1);
lcd2.print("LIVRE");
limpou1 = true;
limpou2 = false;
limpou3 = false;
}
if(distCM1 < 200){
detectou1 = true;
}
if(distCM1 > 200 && detectou1 == true && limpou2 == false){
servo1.write(90);
lcd1.clear();
lcd1.setCursor(3,0);
lcd1.print("DIMINUA A");
lcd1.setCursor(3,1);
lcd1.print("VELOCIDADE");
lcd2.clear();
lcd2.setCursor(4,0);
lcd2.print("CANCELA");
lcd2.setCursor(5,1);
lcd2.print("ABERTA");
limpou1 = false;
limpou2 = true;
limpou3 = false;
}
if(distCM1 < 200 && detectou1 == true && limpou3 == false){
lcd2.clear();
lcd2.setCursor(4,0);
lcd2.print("CANCELA");
lcd2.setCursor(2,1);
lcd2.print("SERA ABERTA");
limpou1 = false;
limpou2 = false;
limpou3 = true;
}
if(distCM2 < 200 && detectou2 == false){
detectou2 = true;
}
if(distCM2 > 200 && detectou2 == true){
servo1.write(0);
detectou1 = false;
detectou2 = false;
}
}