#include <WiFi.h>
#include <ThingSpeak.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
unsigned long myChannelNumber = 3020348;
const char* myWriteAPIKey = "Q9FDMG0DHN6IIP88";
WiFiClient client;
const int LDRpin = A0, IRpin = 17, LEDpin = 15, trigPin = 5, echoPin = 18, thresholdLDR = 300;
void setup() {
Serial.begin(9600);
pinMode(LDRpin, INPUT); pinMode(IRpin, INPUT);
pinMode(LEDpin, OUTPUT); pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
WiFi.begin(ssid, password);
ThingSpeak.begin(client);
}
float getDistanceCM() {
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10);
digitalWrite(trigPin, LOW);
return pulseIn(echoPin, HIGH) * 0.034 / 2;
}
void loop() {
int LDRval = analogRead(LDRpin), IRval = digitalRead(IRpin), longRangeFlag = 0;
float distance = getDistanceCM();
if (distance > 100) {
Serial.println("Object detected beyond 100 cm");
longRangeFlag = 1;
}
if (LDRval < thresholdLDR) {
digitalWrite(LEDpin, IRval == LOW ? HIGH : LOW);
Serial.println(IRval == LOW ? "Motion detected at night" : "No motion at night");
} else {
digitalWrite(LEDpin, LOW);
Serial.println("Daytime - LED OFF");
}
ThingSpeak.setField(1, LDRval);
ThingSpeak.setField(2, IRval);
ThingSpeak.setField(3, digitalRead(LEDpin));
ThingSpeak.setField(4, distance);
ThingSpeak.setField(5, longRangeFlag);
ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
Serial.print("Distance: "); Serial.print(distance); Serial.println(" cm");
delay(10000);
}