#include <WiFi.h>
#include <ThingSpeak.h>
#include "DHTesp.h"
int TRIG_PIN = 14; // ESP32 pin GPIO23 connected to Ultrasonic Sensor's TRIG pin
int ECHO_PIN = 27; // ESP32 pin GPIO22 connected to Ultrasonic Sensor's ECHO pin
float duration_us, distance_cm;
float cal_distance();
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
WiFiClient client;
unsigned long myChannelNumber = 2580525;
const char * myWriteAPIKey = "DJQJRHIORQTZBNLP";
int statusCode;
void setup() {
// begin serial port
Serial.begin (115200);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
// configure the trigger pin to output mode
pinMode(TRIG_PIN, OUTPUT);
// configure the echo pin to input mode
pinMode(ECHO_PIN, INPUT);
pinMode(5, OUTPUT);
if(WiFi.status() != WL_CONNECTED)
{
Serial.print("Attempting to connect");
while(WiFi.status() != WL_CONNECTED)
{
WiFi.begin(ssid, pass);
Serial.print(".");
delay(5000);
}
Serial.println("\nConnected.");
}
}
void loop() {
distance_cm = cal_distance();
Serial.print("distance: ");
Serial.print(distance_cm);
Serial.println(" cm");
ThingSpeak.setField(1, distance_cm);
if((distance_cm>=200)||(distance_cm<=50))
{
digitalWrite(5, HIGH);
}
else
{
digitalWrite(5, LOW);
}
statusCode = ThingSpeak.writeFields(myChannelNumber,myWriteAPIKey);
if(statusCode == 200) { //successful writing code
Serial.println("Channel update successful.");
}
else {
Serial.println("Problem Writing data. HTTP error code :" +
String(statusCode));
}
delay(100);
}
float cal_distance()
{
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
// generate 10-microsecond pulse to TRIG pin
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
//digitalWrite(TRIG_PIN, LOW);
// measure duration of pulse from ECHO pin
duration_us = pulseIn(ECHO_PIN, HIGH);
// return the distance
return( (0.034 * duration_us)/2);
}