const int sensorPin1 = 33; // Pin sensor fotolistrik 1 (untuk mendeteksi cahaya sekitar)
const int sensorPin2 = 32; // Pin sensor fotolistrik 2 (untuk mengukur intensitas cahaya lampu)
const int relayPin = 2; // Pin kontrol relay
const int ledPin = 13; // Pin kontrol LED dengan PWM
const float R = 10.0; // Resistance value of LDR (in kΩ)
const int threshold = 500; // Nilai threshold untuk mendeteksi cahaya
const float calibrationFactor1 = 1.2; // Faktor kalibrasi sensor 1
const float calibrationFactor2 = 1.0; // Faktor kalibrasi sensor 2 (sesuaikan dengan hasil pengujian)
void setup() {
pinMode(sensorPin1, INPUT); // Set pin sensor 1 sebagai input
pinMode(sensorPin2, INPUT); // Set pin sensor 2 sebagai input
pinMode(relayPin, OUTPUT); // Set pin kontrol relay sebagai output
pinMode(ledPin, OUTPUT); // Set pin kontrol LED sebagai output
Serial.begin(115200); // Inisialisasi serial monitor
}
void loop() {
// Baca nilai sensor fotolistrik 1 (cahaya sekitar)
int sensorValue1 = analogRead(sensorPin1);
float voltage1 = sensorValue1 * (3.3 / 4095.0); // Konversi nilai sensor ke tegangan (untuk ESP32 dengan resolusi ADC 12-bit)
float lux1 = (voltage1 * 1000) / (0.01 * R); // Hitung nilai lux berdasarkan rumus
lux1 = lux1 * calibrationFactor1; // Terapkan faktor kalibrasi sensor 1
// Baca nilai sensor fotolistrik 2 (intensitas cahaya lampu)
int sensorValue2 = analogRead(sensorPin2);
float voltage2 = sensorValue2 * (3.3 / 4095.0); // Konversi nilai sensor ke tegangan
float lux2 = (voltage2 * 1000) / (0.01 * R); // Hitung nilai lux berdasarkan rumus
lux2 = lux2 * calibrationFactor2; // Terapkan faktor kalibrasi sensor 2
// Kontrol relay berdasarkan nilai sensor 1 (cahaya sekitar)
if (sensorValue1 > threshold) { // Jika sensor 1 mendeteksi cahaya terang
digitalWrite(relayPin, LOW); // Matikan relay
Serial.print("Lux1: ");
Serial.print(lux1);
Serial.println(" - Relay OFF");
} else { // Jika sensor 1 mendeteksi cahaya redup
digitalWrite(relayPin, HIGH); // Nyalakan relay
Serial.print("Lux1: ");
Serial.print(lux1);
Serial.println(" - Relay ON");
}
// Kontrol kecerahan LED dengan PWM berdasarkan nilai sensor 2 (intensitas cahaya lampu)
int pwmValue = map(sensorValue2, 0, 4095, 0, 255); // Konversi nilai sensor ke rentang PWM (0-255)
analogWrite(ledPin, pwmValue); // Atur PWM pada pin LED
Serial.print("Lux2: ");
Serial.print(lux2);
Serial.print(" - PWM Value: ");
Serial.println(pwmValue);
delay(100); // Tunggu 100 milidetik sebelum melakukan pengukuran ulang
}