#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
const int pinDistanta = A0;
const int pinPragSigur = A1;
const int pinRosu = 4;
const int pinVerde = 5;
const int pinBuzzer =6;
unsigned long ultimaComutare = 0;
bool stareBuzzer = false;
void setup() {
pinMode(pinRosu, OUTPUT);
pinMode(pinVerde, OUTPUT);
pinMode(pinBuzzer, OUTPUT);
lcd.init();
lcd.backlight();
}
void loop() {
int valD = analogRead(pinDistanta);
int valP = analogRead(pinPragSigur);
int distanta = map(valD,0,1023,10,150);
int pragSigur = map(valP,0,1023,10,150);
float procent = distanta * 100.0 / pragSigur;
lcd.setCursor(0,0);
lcd.print("Dist: ");
lcd.print(distanta);
lcd.print(" cm ");
lcd.setCursor(0,1);
lcd.print("Prag: ");
lcd.print(pragSigur);
lcd.print(" cm ");
if(procent > 50){
digitalWrite(pinRosu, LOW);
digitalWrite(pinVerde, HIGH);
}
else if (procent >=25){
digitalWrite(pinRosu, HIGH);
digitalWrite(pinVerde, HIGH);
if(millis() - ultimaComutare >=300){
stareBuzzer= !stareBuzzer;
digitalWrite(pinBuzzer, stareBuzzer ? HIGH: LOW);
if(stareBuzzer == true){
delay(500);
noTone(pinBuzzer);
delay(500);
}
}
}
else{
digitalWrite(pinRosu, HIGH);
digitalWrite(pinVerde, LOW);
tone(pinBuzzer, 1000);
delay(250);
noTone(pinBuzzer);
delay(250);
}
}