#define BLYNK_TEMPLATE_ID "TMPL6hO7hWY4a"
#define BLYNK_TEMPLATE_NAME "Projek Akhir"
#define BLYNK_AUTH_TOKEN "FNMVb6ZS7ei3Tl72UiO2sZEpTfyNbTCx""
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
#include <LiquidCrystal_I2C.h>
#include <BH1750.h>
// Masukkan kredensial WiFi dan token Blynk Anda
char auth[] = "YOUR_BLYNK_AUTH_TOKEN";
char ssid[] = "YOUR_WIFI_SSID";
char pass[] = "YOUR_WIFI_PASSWORD";
// Pin untuk servo motor
const int servoPin = 15;
// Variabel untuk menyimpan nilai intensitas cahaya
float lightIntensity;
// Batas nilai intensitas cahaya untuk membuka/menutup tirai
const float lightThreshold = 10800.0; // Nilai ini dapat disesuaikan
// Objek Servo
Servo myServo;
// Virtual Pin untuk mengirim data ke Blynk
const int virtualPinLight = V0;
const int virtualPinServo = V1;
// Inisialisasi LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C dan ukuran LCD
// Inisialisasi BH1750
BH1750 lightMeter;
void setup() {
// Inisialisasi komunikasi serial
Serial.begin(115200);
// Inisialisasi Blynk
Blynk.begin(auth, ssid, pass);
// Inisialisasi objek Servo
myServo.attach(servoPin);
// Buka tirai pada awal program
myServo.write(0);
// Inisialisasi LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Intensitas Cahaya:");
// Inisialisasi BH1750
lightMeter.begin();
}
void loop() {
// Jalankan Blynk
Blynk.run();
// Baca nilai intensitas cahaya dari BH1750
lightIntensity = lightMeter.readLightLevel();
// Kirim nilai intensitas cahaya ke Blynk
Blynk.virtualWrite(virtualPinLight, lightIntensity);
// Kontrol servo motor berdasarkan intensitas cahaya
if (lightIntensity > lightThreshold) {
// Tutup tirai
myServo.write(180);
Blynk.virtualWrite(virtualPinServo, 180);
} else {
// Buka tirai
myServo.write(0);
Blynk.virtualWrite(virtualPinServo, 0);
}
// Tampilkan nilai intensitas cahaya pada LCD
lcd.setCursor(0, 1);
lcd.print(lightIntensity);
delay(1000); // Tunda 1 detik
}