#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 1); // Change the I2C address if needed
const int numSensors = 4;
const int triggerPin[numSensors] = {2, 3, 4, 5}; // Trigger pins of ultrasound sensors
const int echoPin[numSensors] = {6, 7, 8, 9}; // Echo pins of ultrasound sensors
const int stopDistance = 100; // Distance in centimeters, below which "STOP" will be displayed
void setup() {
lcd.init();
lcd.backlight();
for (int i = 0; i < numSensors; i++) {
pinMode(triggerPin[i], OUTPUT);
pinMode(echoPin[i], INPUT);
}
lcd.setCursor(0, 0);
lcd.print("Reverse Mode");
}
void loop() {
bool objectDetected = false;
for (int i = 0; i < numSensors; i++) {
long duration, distance;
digitalWrite(triggerPin[i], LOW);
delayMicroseconds(2);
digitalWrite(triggerPin[i], HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin[i], LOW);
duration = pulseIn(echoPin[i], HIGH);
distance = duration * 0.034 / 2; // Calculate distance in centimeters
if (distance < stopDistance) {
objectDetected = true;
break; // Exit loop early if any object is detected
}
}
lcd.setCursor(0, 1);
if (objectDetected) {
lcd.print("STOP");
} else {
lcd.print("SAFE");
}
delay(500); // Delay for stability
}