#define BLYNK_TEMPLATE_ID "TMPL6rQEXIXrt"
#define BLYNK_TEMPLATE_NAME "LAMPU OTOMATIS"
#define BLYNK_AUTH_TOKEN "YsLqJLHAjF_AAQsbn2t_x0JEhYkQDA6s"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#define LDR_PIN 33
#define BUZZER 19
#define RELAY 23
const char* ssid = "Wokwi-GUEST";
const char* password = "";
char auth[] = BLYNK_AUTH_TOKEN;
WiFiClient client;
LiquidCrystal_I2C lcd(0x27, 16, 2);
const float GAMMA = 0.7;
const float RL10 = 50;
void setup() {
Serial.begin(115200);
// Koneksi ke WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
// Mulai koneksi Blynk
Blynk.begin(auth, ssid, password);
pinMode(LDR_PIN, INPUT);
pinMode(BUZZER, OUTPUT);
pinMode(RELAY, OUTPUT);
lcd.init();
lcd.backlight();
}
void loop() {
// Membaca nilai dari LDR
int analogValue = analogRead(LDR_PIN);
float voltage = analogValue / 4095.0 * 5.0;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Intensitas: ");
lcd.print(lux);
Serial.print("Intensitas Cahaya: ");
Serial.println(lux);
lcd.setCursor(0, 1);
if (lux > 500) {
lcd.print("Lampu Mati");
Serial.println("Kondisi Ruangan Sedang Terang");
digitalWrite(RELAY, LOW);
noTone(BUZZER);
} else {
lcd.print("Lampu Menyala");
Serial.println("Kondisi Ruangan Sedang Gelap");
digitalWrite(RELAY, HIGH);
tone(BUZZER, 1000);
}
// Kirim data ke Blynk
Blynk.virtualWrite(V0, lux); // Kirim nilai lux ke virtual pin V0
Blynk.virtualWrite(V1, RELAY);
// Jalankan Blynk
Blynk.run();
delay(500);
}