#include <WiFi.h>
#include "ThingSpeak.h"
const int T_PIN = 12;
const int E_PIN = 13;
const int LEFT = 14;
const int RIGHT = 27;
const int UP = 33;
const int DOWN = 34;
const int end1 = 22;
const int end2 = 23;
float distance = 0;
int deadEnd = 0;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
WiFiClient Client;
unsigned long mychannel_number = 2641399;
const char* WriteKey = "HXUGC82JSY98D33Z";
int statusCode;
void getwifi()
{
if(WiFi.status()!= WL_CONNECTED)
{
Serial.println("attemping to connect");
while(WiFi.status()!= WL_CONNECTED)
{
WiFi.begin(ssid,pass);
Serial.println(".");
delay(1000);
}
}
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(LEFT, INPUT);
pinMode(RIGHT, INPUT);
pinMode(UP, INPUT);
pinMode(DOWN, INPUT);
pinMode(T_PIN,OUTPUT);
pinMode(E_PIN,INPUT);
pinMode(end1, INPUT);
pinMode(end2, INPUT);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(Client);
}
float getDist() {
digitalWrite(T_PIN, LOW);
delayMicroseconds(2);
digitalWrite(T_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(T_PIN, LOW);
int duration = pulseIn(E_PIN, HIGH);
return {duration * 0.034 / 2};
}
void loop() {
getwifi();
int e1 = 0;
int e2 = 0;
e1 = digitalRead(end1);
e2 = digitalRead(end2);
distance = getDist();
int left = 0;
int right = 0;
int up = 0;
int down = 0;
delay(10);
if (e1 == 0 || e2 == 0)
deadEnd = 1;
else
deadEnd = 0;
if(digitalRead(LEFT)==1)
left = 1;
else
left = 0;
if(digitalRead(RIGHT)==1)
right = 1;
else
right = 0;
if(digitalRead(UP)==1)
up = 1;
else
up = 0;
if(digitalRead(DOWN)==1)
down = 1;
else
down = 0;
Serial.println("Distance:"+String(distance));
Serial.println("Left:"+String(left));
Serial.println("Right"+String(right));
Serial.println("Up:"+String(up));
Serial.println("Down:"+String(down));
Serial.println("Danger:"+String(deadEnd));
//Storing
ThingSpeak.setField(1,distance);
ThingSpeak.setField(2,left);
ThingSpeak.setField(3,right);
ThingSpeak.setField(4,up);
ThingSpeak.setField(5,down);
ThingSpeak.setField(6,deadEnd);
statusCode = ThingSpeak.writeFields(mychannel_number,WriteKey);
if(statusCode == 200)
{
Serial.println("the channel updated");
}
else
{
Serial.println("error"+String(statusCode));
}
delay(100);
}
/*
#include <DHTesp.h>
#include <WiFi.h>
#include "ThingSpeak.h"
const int dhtpin = 27;
TempAndHumidity data;
DHTesp dhtsensor;
const int trig =13;
const int echo = 14;
const int blue =17;
const int red = 19;
const int green = 18;
const int buzzer = 25;
int buzz_value;
float distance;
float duration;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
WiFiClient Client;
unsigned long mychannel_number = 2603253;
const char* WriteKey = "SM2DQLH0V0UGH2GZ";
int statusCode;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
dhtsensor.setup(dhtpin,DHTesp::DHT22);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(Client);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void getwifi()
{
if(WiFi.status()!= WL_CONNECTED)
{
Serial.println("attemping to connect");
while(WiFi.status()!= WL_CONNECTED)
{
WiFi.begin(ssid,pass);
Serial.println(".");
delay(6000);
}
}
Serial.println("\n connected");
}
float getdistance()
{
digitalWrite(trig,LOW);
delayMicroseconds(4);
digitalWrite(trig, HIGH);
delayMicroseconds(100);
digitalWrite(trig, LOW);
duration = pulseIn(echo,HIGH);
return(duration*0.034/2);
}
void redlight()
{
if(distance >= 100)
{
tone(buzzer,1200);
digitalWrite(red,HIGH);
buzz_value = 1;
}
else
{
noTone(buzzer);
digitalWrite(red, LOW);
buzz_value = 0;
}
delay(10);
}
void bluelight()
{
if(data.humidity <= 25)
{
digitalWrite(blue, HIGH);
}
else{
digitalWrite(blue, LOW);
}
}
void greenlight()
{
if(data.temperature <= 12)
{
digitalWrite(green, HIGH);
}
else
{
digitalWrite(green, LOW);
}
}
void loop() {
getwifi();
distance = getdistance();
data = dhtsensor.getTempAndHumidity();
redlight();
bluelight();
greenlight();
ThingSpeak.setField(1,data.temperature);
ThingSpeak.setField(2,data.humidity);
ThingSpeak.setField(3,distance);
ThingSpeak.setField(4,buzz_value);
statusCode = ThingSpeak.writeFields(mychannel_number,WriteKey);
if(statusCode == 200)
{
Serial.println("the channel updated");
}
else
{
Serial.println("error"+String(statusCode));
}
delay(15000);
}*/