#include <LiquidCrystal_I2C.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
int relayPin1 = 2; // red
int relayPin2 = 3; // green
int relayPin3 = 4; // blue
int relayPin4 = 5; // white
int inches = 0;
int cm = 0;
int resetButton = 8;
int buzzer = 9;
long readUltrasonicDistance(int trigPin, int echoPin)
{
pinMode(trigPin, OUTPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pinMode(echoPin, INPUT);
return pulseIn(echoPin, HIGH);
}
void setup() {
pinMode(relayPin1, OUTPUT);
pinMode(relayPin2, OUTPUT);
pinMode(relayPin3, OUTPUT);
pinMode(relayPin4, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(resetButton, INPUT);
Serial.begin(115200);
lcd.init();
lcd.backlight();
}
void loop() {
//int btnState = digitalRead(resetButton);
if(digitalRead(resetButton) == HIGH)
{
digitalWrite(relayPin1, LOW);
digitalWrite(relayPin2, LOW);
digitalWrite(relayPin3, LOW);
digitalWrite(relayPin4, LOW);
Serial.flush();
for(int i=10; i<=0; i--)
{
Serial.print("Resetting..." + i);
Serial.flush();
delay(1000);
}
}
else
{
cm = 0.01723 * readUltrasonicDistance(6, 7);
inches = (cm / 2.54);
Serial.print(inches);
Serial.print(" in, ");
Serial.print(cm);
Serial.println(" cm");
delay(100);
if (cm >= 5 && cm < 10)
{
digitalWrite(relayPin1, LOW);
digitalWrite(relayPin2, LOW);
digitalWrite(relayPin3, LOW);
digitalWrite(relayPin4, HIGH);
}
else if (cm >= 10 && cm < 15)
{
digitalWrite(relayPin1, LOW);
digitalWrite(relayPin2, LOW);
digitalWrite(relayPin3, HIGH);
digitalWrite(relayPin4, LOW);
}
else if (cm >= 15 && cm < 20)
{
digitalWrite(relayPin1, LOW);
digitalWrite(relayPin2, HIGH);
digitalWrite(relayPin3, LOW);
digitalWrite(relayPin4, LOW);
}
else if (cm >= 20 && cm < 30)
{
digitalWrite(relayPin1, HIGH);
digitalWrite(relayPin2, LOW);
digitalWrite(relayPin3, LOW);
digitalWrite(relayPin4, LOW);
tone(buzzer, 50);
delay(100);
noTone(buzzer);
}
else if (cm >= 30)
{
digitalWrite(relayPin1, LOW);
digitalWrite(relayPin2, LOW);
digitalWrite(relayPin3, LOW);
digitalWrite(relayPin4, LOW);
}
}
}