//******************************************************************************************
//
// Exercicio cancela
//
//******************************************************************************************
// bibliotecas
#include <HCSR04.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
// cria o objeto para controle do servo
Servo servo;
// mapeamento
#define TRIGGER1 10
#define ECHO1 9
#define TRIGGER2 6
#define ECHO2 5
#define SERVO_MOTOR 11
#define LCD1 0X20
#define LCD2 0X21
// variaveis
int tempo = 200;
int val1;
boolean passando = false;
int distancia1;
int distancia2;
int semcarro = 300;
int comcarro = 100;
//Inicializa o display
LiquidCrystal_I2C lcd1(LCD1,16,2);
LiquidCrystal_I2C lcd2(LCD2,16,2);
// Inicializa o sensor ultrassonico
UltraSonicDistanceSensor distanceSensor1(TRIGGER1, ECHO1);
UltraSonicDistanceSensor distanceSensor2(TRIGGER2, ECHO2);
void setup () {
//Inicializa o lcd
// define o pino 11 como entrada para o servo
servo.attach(11);
//Liga o backlight
lcd1.init();
lcd1.setBacklight(HIGH);
lcd2.init();
lcd2.setBacklight(HIGH);
//Mensagem
lcd1.println(" ETEC AF ");
lcd1.setCursor(0,1);
lcd1.println(" ELETRONICA ");
lcd1.setCursor(1,1);
lcd2.println(" EXERCICIO ");
lcd2.setCursor(0,1);
lcd2.println(" CANCELA");
lcd2.setCursor(1,1);
delay(5000);
lcd1.clear();
lcd2.clear();
delay(100);
lcd2.println("By ");
// lcd2.setCursor(0,1);
for(int posi_LCD = 0; posi_LCD < 14; posi_LCD ++)
{
lcd2.setCursor(16,1);
lcd2.scrollDisplayRight(); //Essa é a função que faz as letras se deslocarem
delay(250); // Quanto menor o tempo, mais rápido será o deslocamento
}
lcd1.println("Barreira ");
// lcd2.setCursor(0,16);
for(int posi_LCD = 12; posi_LCD < 16; posi_LCD ++)
{
lcd1.setCursor(12,1);
lcd1.scrollDisplayLeft(); //Essa é a função que faz as letras se deslocarem
delay(250); // Quanto menor o tempo, mais rápido será o deslocamento
}
}
void loop () {
//Variável recebe o valor da função da biblioteca
distancia1 = distanceSensor1.measureDistanceCm();
distancia2 = distanceSensor2.measureDistanceCm();
/*
if(distancia1 > carro && distancia2 > carro && passando == false){
lcd1.println("- Percurso -");
lcd1.setCursor(0,1);
lcd1.println("- Livre -");
lcd1.setCursor(0,0);
lcd2.println("- Percurso -");
lcd2.setCursor(0,1);
lcd2.println("- Livre -");
lcd2.setCursor(0,0);
servo.write(0);
}
if(distancia1 <= carro && distancia2 > carro){
lcd1.println("- Percurso -");
lcd1.setCursor(0,1);
lcd1.println("- Livre -");
lcd1.setCursor(0,0);
lcd2.println("- Percurso -");
lcd2.setCursor(0,1);
lcd2.println("- Livre -");
lcd2.setCursor(0,0);
servo.write(0);
}
lcd1.println("- Diminua a -");
lcd1.setCursor(0,1);
lcd1.println("- Velocidade -");
lcd1.setCursor(0,0);
lcd2.println("- Cancela -");
lcd2.setCursor(0,1);
lcd2.println("- Sera Aberta -");
lcd2.setCursor(0,0);
servo.write(0);
passando = true;
}
*/
if(distancia1 > semcarro && distancia2 > semcarro){
lcd1.println("- Percurso -");
lcd1.setCursor(0,1);
lcd1.println("- Velocidade -");
lcd1.setCursor(0,0);
lcd2.println("- Cancela -");
lcd2.setCursor(0,1);
lcd2.println("- Aberta -");
lcd2.setCursor(0,0);
servo.write(90);
}
/*
if(distancia1 > carro && distancia2 <= carro){
lcd1.println("- Percurso -");
lcd1.setCursor(0,1);
lcd1.println("- Livre -");
lcd1.setCursor(0,0);
lcd2.println("- Percurso -");
lcd2.setCursor(0,1);
lcd2.println("- Livre -");
lcd2.setCursor(0,0);
servo.write(0);
passando = false;
}
*/
delay(tempo);
}