#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int ECHO = 11;
const int TRIG = 12;
int duracao = 0;
long distancia = 0;
int red = 0;
int yel = 0;
int gre = 0;
const int buzzer = 2;
void setup() {
Serial.begin(9600);
pinMode(ECHO, INPUT);
pinMode(TRIG, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
lcd.begin(16, 2);
}
void loop() {
digitalWrite(TRIG, LOW);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duracao = pulseIn(ECHO, HIGH);
distancia = duracao / 58;
Serial.print("Distancia em cm: ");
Serial.println(distancia);
delay(100);
digitalWrite(TRIG, LOW);
delayMicroseconds(10);
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
duracao = pulseIn(ECHO, HIGH);
distancia = duracao / 58;
if (distancia < 5){
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
tone(buzzer, 1200);
delay(200);
noTone(buzzer);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PARE!!! ");
} else if (distancia >= 5 && distancia < 10) {
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
digitalWrite(8, LOW);
tone(buzzer, 1200 - (distancia - 2) * 100);
delay(500);
noTone(buzzer);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("ATENCAO: ");
lcd.print(distancia);
lcd.print(" cm ");
} else if (distancia > 10) {
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(1000);
noTone(buzzer);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SEGURO: ");
lcd.print(distancia);
lcd.print(" cm ");
}
}