//lcd configuraçoes
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);
//sensor de luz
const int ldrPin = A0; // Pino do LDR
int ldrValue = 0; // Variável para armazenar a leitura do LDR
int brightness = 0; // Variável para controlar a luminosidade do LED
//sensor de distancia
const int distancia_mota = 0;
const int distancia_carro = 10;
const int distancia_ferrari = 25;
const int distancia_porche = 50;
const int TRIG = 18;
const int ECHO = 19;
//Demais componentes
const int ledGreen = 2;
const int ledYellow = 3;
const int ledRed = 4;
const int buzzer = 17;
// Variaveis para funcionamento do Buzzer
float seno;
int frequencia;
void setup()
{
Serial.begin(9600);
// Configurações do Sensor distancia
pinMode(TRIG,OUTPUT);
pinMode(ECHO,INPUT);
// Configurações do LED
pinMode(ledYellow, OUTPUT);
pinMode(ledGreen, OUTPUT);
pinMode(ledRed, OUTPUT);
//Configurações do Buzzer
pinMode(buzzer, OUTPUT);
//configuraçoes do lcd
lcd.begin(16, 2);
pinMode(5,OUTPUT);
analogWrite(5,96);
lcd.setCursor(1,0);
lcd.write("SENSOR");
}
void loop() {
// Ler a intensidade de luz
ldrValue = analogRead(ldrPin);
brightness = map(ldrValue, 0, 1023, 0, 255);
int distancia = sensor_morcego(TRIG,ECHO);
if(distancia <= distancia_carro && distancia >= distancia_mota){
Serial.print("Perigo: ");
Serial.print(distancia);
Serial.println("cm");
analogWrite(ledRed, brightness); // Ligar o LED com a intensidade ajustada pelo LDR
digitalWrite(ledGreen, LOW);
digitalWrite(ledYellow, LOW);
tocaBuzzer();
delay(100);
lcd.setCursor(1,0);
lcd.write("SENSOR PERIGO ");
}
else if(distancia >= distancia_carro && distancia <= distancia_ferrari){
Serial.print("cuidado: ");
Serial.print(distancia);
Serial.println("cm");
analogWrite(ledYellow, brightness); // Ligar o LED com a intensidade ajustada pelo LDR
digitalWrite(ledGreen, LOW);
digitalWrite(ledRed, LOW);
tocaBuzzer1();
delay(500);
lcd.setCursor(1,0);
lcd.write("SENSOR CUIDADO");
}
else if(distancia >=distancia_ferrari && distancia <=distancia_porche){
Serial.print("Livre: ");
Serial.print(distancia);
Serial.println("cm");
analogWrite(ledGreen, brightness); // Ligar o LED com a intensidade ajustada pelo LDR
digitalWrite(ledYellow, LOW);
digitalWrite(ledRed, LOW);
tocaBuzzer2();
delay(1000);
lcd.setCursor(1,0);
lcd.write("SENSOR LIVRE ");
}
else if(distancia >=distancia_porche){
Serial.print("OFF: ");
Serial.print(distancia);
Serial.println("cm");
digitalWrite(ledGreen, LOW);
digitalWrite(ledYellow, LOW);
digitalWrite(ledRed, LOW);
noTone(17);
delay(1000);
lcd.setCursor(1,0);
lcd.write("SENSOR OFF ");
}
}
int sensor_morcego(int pinotrig,int pinoecho){
digitalWrite(pinotrig,LOW);
delayMicroseconds(2);
digitalWrite(pinotrig,HIGH);
delayMicroseconds(10);
digitalWrite(pinotrig,LOW);
return pulseIn(pinoecho,HIGH)/58;
}
//Função para execução do Alarme Sonoro
void tocaBuzzer(){
for(int x=0;x<180;x++){
seno=(sin(x*3.1416/180));
frequencia = 2000+(int(seno*100));
tone(buzzer,frequencia);}{
noTone(17);
}
}
void tocaBuzzer1(){
for(int x=0;x<180;x++){
seno=(sin(x*3.1416/180));
frequencia = 2000+(int(seno*100));
tone(buzzer,frequencia);}{
noTone(17);
}
}
void tocaBuzzer2(){
for(int x=0;x<180;x++){
seno=(sin(x*3.1416/180));
frequencia = 2000+(int(seno*100));
tone(buzzer,frequencia);}{
noTone(17);
}
}