// Untuk menyambungkan ke Blynk
#define BLYNK_TEMPLATE_ID "TMPL6bG1F4hxQ"
#define BLYNK_TEMPLATE_NAME "Lampu Otomatis"
#define BLYNK_AUTH_TOKEN "W33XxFLXFM3VI5JM7WX6At50bw2UTGHV"
// Mendeklarasikan library yang digunakan
#include <LiquidCrystal_I2C.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_PRINT Serial
//Menginisiasikan lcd I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);
//Untuk menyambungkan ke Blynk part 2
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
// Mendeklarasikan pin yang digunakan
#define LDRPin 27
#define LEDPin 2
// variabel kalibrasi LDR
const float GAMMA = 0.7;
const float RL10 = 50;
void setup() {
Serial.begin(115200);
lcd.init();
lcd.setBacklight(HIGH);
Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
pinMode(LDRPin, INPUT);
pinMode(LEDPin, OUTPUT);
timer.setInterval(100L, sendSensorData);
}
void sendSensorData() {
int nilaiADC = analogRead(LDRPin);
//Kalibrasi LDR
float voltage = nilaiADC * 5 / 4095.0;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
//Menampilkan nilai lux di lcd
lcd.setCursor(0, 0);
lcd.print("Lux: ");
lcd.print(lux);
if (lux <= 200)
{
digitalWrite(2, HIGH);
}
else
{
digitalWrite(2, LOW);
}
delay(20);
}
void loop() {
Blynk.run();
timer.run();
}