CODE WITH FIREBASE :
#include <ESP8266WiFi.h>
#include <FirebaseESP8266.h>
// Replace with your network credentials
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
// Replace with your Firebase project credentials
#define FIREBASE_HOST "YOUR_FIREBASE_HOST"
#define FIREBASE_AUTH "YOUR_FIREBASE_AUTH"
// Define the Firebase data object
FirebaseData firebaseData;
const int trigFront = 2; // Trig pin for front sensor
const int echoFront = 6; // Echo pin for front sensor
const int trigBack = 3; // Trig pin for back sensor
const int echoBack = 7; // Echo pin for back sensor
const int trigLeft = 4; // Trig pin for left sensor
const int echoLeft = 8; // Echo pin for left sensor
const int trigRight = 5; // Trig pin for right sensor
const int echoRight = 9; // Echo pin for right sensor
const int redLED = 10; // Pin for red LED
const int greenLED = 11; // Pin for green LED
long duration;
int distanceFront, distanceBack, distanceLeft, distanceRight;
int targetDistanceFront, targetDistanceLeft, targetDistanceRight;
void setup() {
Serial.begin(9600);
WiFi.begin(ssid, password);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("Connected to Wi-Fi");
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
Firebase.reconnectWiFi(true);
pinMode(trigFront, OUTPUT);
pinMode(echoFront, INPUT);
pinMode(trigBack, OUTPUT);
pinMode(echoBack, INPUT);
pinMode(trigLeft, OUTPUT);
pinMode(echoLeft, INPUT);
pinMode(trigRight, OUTPUT);
pinMode(echoRight, INPUT);
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
}
void loop() {
// Read target distances from Firebase
if (Firebase.getInt(firebaseData, "/distanceFront")) {
targetDistanceFront = firebaseData.intData();
} else {
Serial.println("Failed to get front distance from Firebase");
Serial.println(firebaseData.errorReason());
}
if (Firebase.getInt(firebaseData, "/distanceLeft")) {
targetDistanceLeft = firebaseData.intData();
} else {
Serial.println("Failed to get left distance from Firebase");
Serial.println(firebaseData.errorReason());
}
if (Firebase.getInt(firebaseData, "/distanceRight")) {
targetDistanceRight = firebaseData.intData();
} else {
Serial.println("Failed to get right distance from Firebase");
Serial.println(firebaseData.errorReason());
}
distanceFront = getDistance(trigFront, echoFront);
Serial.print("Distance Front: ");
Serial.println(distanceFront);
distanceBack = getDistance(trigBack, echoBack);
Serial.print("Distance Back: ");
Serial.println(distanceBack);
distanceLeft = getDistance(trigLeft, echoLeft);
Serial.print("Distance Left: ");
Serial.println(distanceLeft);
distanceRight = getDistance(trigRight, echoRight);
Serial.print("Distance Right: ");
Serial.println(distanceRight);
if (distanceFront == targetDistanceFront && distanceLeft == targetDistanceLeft
&& distanceRight == targetDistanceRight) {
digitalWrite(greenLED, HIGH);
digitalWrite(redLED, LOW);
} else {
digitalWrite(greenLED, LOW);
digitalWrite(redLED, HIGH);
}
delay(1000); // Delay to avoid excessive serial printing
}
int getDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
int distance = duration * 0.034 / 2; // Convert duration to cm
return distance;
}