#include <WiFi.h>
#include <ThingSpeak.h>
WiFiClient client;
unsigned long myChannelNumber = 2758007;
const char* myWriteAPIKey = "FHSCZ6GOGMGEMGRP"; // Replace with your API key
const char* ssid = "Wokwi-GUEST"; // Network SSID
#define LIGHT_SENSOR_PIN 4 // ESP32 pin GPIO36 (ADC0)
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
Serial.println("Connecting to WiFi...");
// Connect to WiFi
while (WiFi.begin(ssid, "") != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
// Initialize ThingSpeak
ThingSpeak.begin(client);
}
void loop() {
// Read the input on analog pin (value between 0 and 4095)
int analogValue = analogRead(LIGHT_SENSOR_PIN);
// Print the raw analog reading
Serial.print("Analog Value = ");
Serial.println((5-analogValue*5/1023)/(analogValue*5/1023));
// Determine the light intensity
if (analogValue < 40) {
Serial.println(" => Dark");
} else if (analogValue < 800) {
Serial.println(" => Dim");
} else if (analogValue < 2000) {
Serial.println(" => Light");
} else if (analogValue < 3200) {
Serial.println(" => Bright");
} else {
Serial.println(" => Very Bright");
}
// Send the light sensor data to ThingSpeak
ThingSpeak.setField(1, analogValue); // Set the value for Field 1
int statusCode = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); // Write to ThingSpeak
if (statusCode == 200) {
Serial.println("Data sent to ThingSpeak successfully.");
} else {
Serial.print("Failed to send data. Error code: ");
Serial.println(statusCode);
}
// Wait 15 seconds before the next reading (ThingSpeak allows updates every 15 seconds)
delay(15000); // ThingSpeak update rate
}