#include <Arduino.h>
// --- Deklarasi Pin (Sesuai JSON terbaru) ---
const int BTN_PIN = 4; // Tombol
const int LED_MERAH = 2; // LED Merah
const int LED_BIRU = 5; // LED Biru (Sebagai Output Analog/PWM)
const int LDR_PIN = 34; // Sensor LDR
// --- Variabel Debounce ---
int statusLedMerah = LOW;
int statusTombol;
int statusTombolSebelumnya = HIGH;
unsigned long waktuDebounceTerakhir = 0;
const unsigned long jedaDebounce = 50;
void setup() {
Serial.begin(115200);
pinMode(BTN_PIN, INPUT_PULLUP);
pinMode(LED_MERAH, OUTPUT);
pinMode(LED_BIRU, OUTPUT);
pinMode(LDR_PIN, INPUT);
digitalWrite(LED_MERAH, LOW);
analogWrite(LED_BIRU, 0);
Serial.println("Sistem Berjalan...");
}
void loop() {
// 1. DEBOUNCE TOMBOL
int bacaTombol = digitalRead(BTN_PIN);
if (bacaTombol != statusTombolSebelumnya) {
waktuDebounceTerakhir = millis();
}
if ((millis() - waktuDebounceTerakhir) > jedaDebounce) {
if (bacaTombol != statusTombol) {
statusTombol = bacaTombol;
if (statusTombol == LOW) {
statusLedMerah = !statusLedMerah;
}
}
}
digitalWrite(LED_MERAH, statusLedMerah);
statusTombolSebelumnya = bacaTombol;
// 2. BACA SENSOR & KONTROL PWM
int nilaiLDR = analogRead(LDR_PIN);
int kecerahanPWM = map(nilaiLDR, 0, 4095, 0, 255);
analogWrite(LED_BIRU, kecerahanPWM);
// 3. DEBUGGING
Serial.print("LED Merah: ");
Serial.print(statusLedMerah == HIGH ? "NYALA" : "MATI ");
Serial.print(" | Nilai LDR: ");
Serial.print(nilaiLDR);
Serial.print(" | PWM Biru: ");
Serial.println(kecerahanPWM);
delay(50);
}