#include <Arduino.h>
#include <WiFi.h>
#include <ThingSpeak.h>
const char* ssid = "Wokwi-GUEST";
const char* pass = "";
const char* myWriteAPIKey = "7NXWEDLHKUGLU6PY";
const unsigned long myChannelNumber = 3043774;
WiFiClient client;
const int ledPin = 18;
const int trigPin = 5;
const int echoPin = 19;
const int ldrPin = 17;
// Sensor variables
float pingTime, distanceCM;
int ldrValue;
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
pinMode(ledPin, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ldrPin, INPUT);
Serial.println("ESP32 Setup Complete.");
}
void loop() {
// WiFi Reconnect Logic
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Connecting to Wi-Fi...");
while (WiFi.status() != WL_CONNECTED) {
WiFi.begin(ssid, pass);
Serial.print(".");
delay(5000);
}
Serial.println("\nConnected.");
}
// LDR Reading
ldrValue = digitalRead(ldrPin); // 0 = Dark, 1 = Light
// Distance Measurement
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
pingTime = pulseIn(echoPin, HIGH);
distanceCM = (pingTime * 0.0343) / 2;
Serial.print("Distance (cm): ");
Serial.println(distanceCM);
Serial.print("LDR Value: ");
Serial.println(ldrValue);
// LED Logic
if (distanceCM <= 100 && ldrValue == 0) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
// Send to ThingSpeak
ThingSpeak.setField(1, distanceCM);
ThingSpeak.setField(2, ldrValue);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if (x == 200) {
Serial.println("Data sent to ThingSpeak.");
} else {
Serial.println("ThingSpeak Error: " + St