// Program untuk membaca LDR Module Sensor untuk mendapatkan
// nilai Intensitas Cahaya dan State berdasrkan Threshold tertentu
// Jika nilai Intensitas <= threshold maka state bernilai true
// Jika nilai Intensitas > threshold maka state bernilai false
const int LEDMerah = 4;
const int pinLDR = 33;
float kecerahan;
int threshold = 1000;
void setup() {
// Inisialisasi komunikasi serial
Serial.begin(115200);
pinMode(LEDMerah, OUTPUT);
}
void loop() {
int nilaiADC = analogRead(pinLDR);
float nilaiIntensitas = readIntensitas(nilaiADC); // Membaca nilai Intensitas Cahaya
digitalWrite(LEDMerah, readStatus(threshold)); // Control LED
Serial.println("Nilai Intensitas Cahaya: "+String(nilaiIntensitas));
delay(100);
}
float readIntensitas(int adcSignal){
const float GAMMA = 0.7;
const float RL10 = 50;
float voltase = adcSignal / 4096. * 5;
float resistansi = 2000 * voltase / (1-voltase / 5);
kecerahan =pow(RL10 * 1e3 * pow(10, GAMMA) /resistansi, (1/GAMMA));
return kecerahan;
}
bool readStatus(int batas){
bool state;
if (kecerahan <= batas){
state = true;
}
else{
state = false;
}
return state;
}