#include <WiFi.h>
#include <WiFiClient.h>
#include "ThingSpeak.h"
// Pin Definitions
#define Low_LED_Pin 12
#define High_LED_Pin 14
#define PIN_TRIG 5
#define PIN_ECHO 17
// WiFi Credentials
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
// ThingSpeak Configuration
const int myChannelNumber = 3055774; // Updated Channel ID
const char* myApiKey = "VBPLTZQVDTEQRDVP"; // Updated Write API Key
const char* server = "api.thingspeak.com";
WiFiClient client;
void setup() {
Serial.begin(115200);
// Set pin modes
pinMode(Low_LED_Pin, OUTPUT);
pinMode(High_LED_Pin, OUTPUT);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
// Connect to WiFi
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
// Initialize ThingSpeak
ThingSpeak.begin(client);
}
void loop() {
// Trigger the ultrasonic sensor
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
// Read echo duration
int duration = pulseIn(PIN_ECHO, HIGH);
int distance = duration / 58; // Convert to cm
// Print distance to Serial Monitor
Serial.print("Distance in CM: ");
Serial.println(distance);
// Send data to ThingSpeak
ThingSpeak.setField(1, distance);
ThingSpeak.writeFields(myChannelNumber, myApiKey);
// LED control based on distance
if (distance < 20) {
digitalWrite(High_LED_Pin, HIGH);
digitalWrite(Low_LED_Pin, LOW);
} else if (distance > 300) {
digitalWrite(Low_LED_Pin, HIGH);
digitalWrite(High_LED_Pin, LOW);
} else {
digitalWrite(High_LED_Pin, LOW);
digitalWrite(Low_LED_Pin, LOW);
}
delay(1000); // Wait 1 second before next reading