//Nama  : Choirul Aminin
//NIM   : 20102117
//Tugas : Lampu Otomatis berdasarkan Intensitas Cahaya (Tantangan)

const float GAMMA = 0.7; //Gamma 0.7
const float RL10 = 50; //Resistor 50 Ohm
int LedPin = 33; //deklarasi led pada pin 33

void setup() {
  Serial.begin(115200);
  pinMode(12, OUTPUT); //led pada Photoresistor di pin 12 (bukan di pin esp) sebagai output
  pinMode(LedPin, OUTPUT); //ledpin sebagai output
}

void loop() {
  int analogValue = analogRead(25); // membaca analog pada pin 25
  float voltage = analogValue * 5/4095.0; //bacaan analog dari ldr (5 = vin 5 volt)
  float resistance = 2000 * voltage / (1 - voltage / 5); // konversi
  float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
  Serial.print("Lux     : "); //menampilkan hasil dari lux
  Serial.println(lux);

  if (lux >= 50){ //kondisi lux lebih dari atau sama dengan 50, status terang dan led mati
    Serial.print("Status  : "); 
    Serial.println("Terang"); 
    digitalWrite(LedPin, LOW);
  } else { //kondisi lux kurang dari 50, status gelap dan led hidup
    Serial.print("Status: ");
    Serial.println("Gelap");
    digitalWrite(LedPin, HIGH);
  }
  Serial.println("=============================="); //memberikan batas agar rapi
  delay(100); // this speeds up the simulation
}