#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <ThingSpeak.h>
int trigg_1=25;
int trigg_2=23;
int trigg_3=32;
int echo_1=26;
int echo_2=4;
int echo_3=33;
int buzzer=14;
float distance1;
float distance2;
float distance3;
char ssid[] = "Wokwi-GUEST"; //wifi id
char pass[] = ""; //wifi password
int statuscode;
long myChannelNumber =2623640; //thingspeak channel number
const char * myWriteAPIKey = "83PLM7HSPDJWIWA4"; //thingspeak mywrite_apikey
WiFiClient client; //wifi client
LiquidCrystal_I2C lcd(0x27, 16, 2); //setting lcd(16x2)
void setup() {
lcd.init(); // initialize the lcd
lcd.backlight();
Serial.begin(115200);
pinMode(trigg_1,OUTPUT);
pinMode(trigg_2, OUTPUT);
pinMode(trigg_3, OUTPUT);
pinMode(echo_1, INPUT);
pinMode(echo_2, INPUT);
pinMode(echo_3, INPUT);
pinMode(buzzer, OUTPUT);
WiFi.mode(WIFI_STA); //wifi setup
if(WiFi.status() != WL_CONNECTED) {//checking connection for wifi
Serial.print("Attempting to connect");
while(WiFi.status() != WL_CONNECTED) {
WiFi.begin(ssid, pass);
Serial.print(".");
delay(5000);
}
Serial.println("\nConnected.");
}
ThingSpeak.begin(client); //connecting wifi to thingspeak
}
int ultra_1(){ //getting utrasonic_1 sensor data
digitalWrite(trigg_1, LOW);
delay(10);
digitalWrite(trigg_1,HIGH);
delay(100);
digitalWrite(trigg_1,LOW);
distance1 = pulseIn(echo_1,HIGH);
return(distance1*0.034/2);
}
int ultra_2(){ //getting utrasonic_2 sensor data
digitalWrite(trigg_2, LOW);
delay(10);
digitalWrite(trigg_2,HIGH);
delay(100);
digitalWrite(trigg_2,LOW);
distance2 = pulseIn(echo_2,HIGH);
return(distance2*0.034/2);
}
int ultra_3(){ //getting utrasonic_3 sensor data
digitalWrite(trigg_3, LOW);
delay(10);
digitalWrite(trigg_3,HIGH);
delay(100);
digitalWrite(trigg_3,LOW);
distance3 = pulseIn(echo_3,HIGH);
return(distance3*0.034/2);
}
void loop() {
// giving ultrasonic value to variables
int blind_1 = ultra_1();
int blind_2 = ultra_2();
int blind_3 = ultra_3();
if(blind_1<=250){
tone(buzzer,500);
noTone(buzzer);
lcd.clear();
lcd.setCursor(2,0); // (0,0) => (row,column) of lcd
lcd.println("Danger ahead");
delay(1000);
lcd.clear();
lcd.setCursor(6,0);
lcd.println("turn");
lcd.setCursor(2,1);
lcd.println("left or right");
delay(1000);
if(blind_2 > 250 ){
noTone(buzzer);
lcd.clear(); // clear display
lcd.setCursor(3,0); // move cursor to (0, 0)
lcd.println("turn right");
}
else if(blind_3 > 250){
noTone(buzzer);
lcd.clear();
lcd.setCursor(3,0);
lcd.println("turn left");
}
else{
noTone(buzzer);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("There is no way");
lcd.setCursor(2,1);
lcd.print("Turn around");
delay(2000);
}
}
else {
lcd.clear();
lcd.setCursor(2,0);
lcd.println("Safe to go");
noTone(buzzer);
}
//set feilds for ultrasonic
ThingSpeak.setField(1,blind_1);
// ThingSpeak.setField(2,blind_2);
// ThingSpeak.setField(3,blind_3);
//writing values into thinkspeak through myChannelNumber, myWriteAPIKey
int statusCode = ThingSpeak.writeField(myChannelNumber,1,blind_1,myWriteAPIKey);
//checking if values whether send to thingspeak or not
if(statusCode==200){
Serial.println("Channel update successful.");
}
else {
Serial.println("Problem Writing data. HTTP error code :" +
String(statusCode));
}
delay(5000);
}