#define LDR A0 //LDR pada pin A0
#define MAX_ADC_READING 1023
#define ADC_REF_VOLTAGE 5.0
#define REF_RESISTANCE 10000
#define LUX_CALC_SCALAR 125235178.3654270
#define LUX_CALC_EXPONENT -1.604568157
const int led = 3;
int nilai = 0;
void setup() {
Serial.begin(9600);
pinMode(led, OUTPUT);
digitalWrite(led, 0);
}
void loop() {
int ldrRawData;
float resistorVoltage, ldrVoltage;
float ldrResistance;
float ldrLux;
ldrRawData = analogRead(LDR); //Baca sensor
//------------Konversi dari data analog ke nilai lux------------//
resistorVoltage = (float)ldrRawData / MAX_ADC_READING * ADC_REF_VOLTAGE;
ldrVoltage = ADC_REF_VOLTAGE - resistorVoltage;
ldrResistance = ldrVoltage / resistorVoltage * REF_RESISTANCE;
ldrLux = LUX_CALC_SCALAR * pow(ldrResistance, LUX_CALC_EXPONENT) + 4;
nilai = ldrRawData;
nilai = map(nilai, 0, 1015, 255, 0);
Serial.print("ADC :");
Serial.println(ldrRawData);
Serial.print("LUX :");
Serial.println(ldrLux);
analogWrite(led, nilai);
if (nilai >=101){
digitalWrite(led, 0);
}
delay(100);
}