#include <WiFi.h>
#include <ThingSpeak.h>
const int trig = 17;
const int echo = 16;
const int ledpin = 13;
float distance;
float duration;
char ssid[] = "wokwi-GUEST";
char pass[] = "";
unsigned long myChannelNumber = 2610042;
const char *myWriteAPIKey = "mwa0000034516";
int statusCode;
WiFiClient Client;
void setup()
{
Serial.begin(115200);
pinMode(echo, INPUT);
pinMode(trig, OUTPUT);
pinMode(ledpin, OUTPUT);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("Connected to WiFi");
ThingSpeak.begin(Client);
}
void loop()
{
distance = getDistance();
Serial.print("Distance = ");
Serial.print(distance);
Serial.println(" cm");
if (WiFi.status() != WL_CONNECTED)
{
WiFi.reconnect();
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("Reconnected to WiFi");
}
ThingSpeak.setField(1, distance);
statusCode = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (statusCode == 200)
{
Serial.println("Channel update successful");
blinkLED(200, 400);
}
else
{
Serial.print("Problem Writing data: HTTP error code: ");
Serial.println(statusCode);
blinkLED(400, 200);
}
delay(15000);
}
float getDistance()
{
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
return (duration * 0.0344) / 2;
}
void blinkLED(int onTime, int offTime)
{
digitalWrite(ledpin, HIGH);
delay(onTime);
digitalWrite(ledpin, LOW);
delay(offTime);
}