int D1 = 4;
int ldr = 13;
#include <WiFi.h>
#include <ThingSpeak.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
WiFiClient client;
long myChannelNumber = 2716609;
const char * myWriteAPIKey = "0I6WUX1ALT9CLB1L";
int statusCode;
#define TRIG_PIN 12
#define ECHO_PIN 14
#define RELAY_PIN 4
void setup() {
ThingSpeak.begin(client);
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(D1, OUTPUT);
pinMode(ldr, INPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
}
void loop() {
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.");
}
int val = analogRead(ldr);
long duration, distance;
// Read distance
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = (duration / 2) / 29.1;
// Print sensor readings
Serial.print("LDR Value: ");
Serial.println(val);
Serial.print("Distance: ");
Serial.println(distance);
// Control logic for D1 and RELAY_PIN
if (val >= 500 && distance < 150) {
digitalWrite(D1, HIGH); // Turn on D1 if both conditions are met
digitalWrite(RELAY_PIN, HIGH); // Turn on relay if distance condition is met
} else {
digitalWrite(D1, LOW); // Otherwise, turn off D1
digitalWrite(RELAY_PIN, LOW); // Turn off relay
ThingSpeak.setField(1,distance);
ThingSpeak.setField(2,val);
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));
}
}
}