#include <WiFi.h>
#include <ThingSpeak.h>
// Pin Definitions
#define TRIG_PIN 23
#define ECHO_PIN 22
// WiFi Credentials (Wokwi Simulator)
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// ThingSpeak Configuration (Updated with User Keys)
unsigned long myChannelNumber = 3237942;
const char * myWriteAPIKey = "CH6MJOUTWEUCBDTK";
WiFiClient client;
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
// Connect to WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Connected!");
ThingSpeak.begin(client);
}
void loop() {
// Distance Measurement
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.017;
// Upload to ThingSpeak Field 1
ThingSpeak.setField(1, distance);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if(x == 200){
Serial.println("Cloud Update Successful: " + String(distance) + " cm");
} else {
Serial.println("HTTP Error Code: " + String(x));
}
// ThingSpeak update limit is 15 seconds
delay(15000);
}