#include <IRremote.h>
const byte IR_RECEIVE_PIN = 2; // Pin untuk IR receiver
const int LED_MERAH = 8;
const int LED_KUNING = 9;
const int LED_HIJAU = 10;
// Kode tombol remote dalam heksadesimal
const unsigned long CODE_MERAH = 48;
const unsigned long CODE_KUNING = 24;
const unsigned long CODE_HIJAU = 122;
const unsigned long CODE_BLINK = 152; // Tambahan tombol untuk mode berkedip
bool statusMerah = LOW;
bool statusKuning = LOW;
bool statusHijau = LOW;
bool isBlinking = false; // Status mode berkedip
void setup() {
Serial.begin(9600);
Serial.println("Kontrol LED dengan Remote");
pinMode(LED_MERAH, OUTPUT);
pinMode(LED_KUNING, OUTPUT);
pinMode(LED_HIJAU, OUTPUT);
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
}
void loop() {
if (IrReceiver.decode()) {
unsigned long ir_code = IrReceiver.decodedIRData.command;
Serial.print("Kode IR: ");
Serial.println(ir_code, HEX); // Tampilkan kode dalam heksadesimal
if (ir_code == CODE_MERAH) {
statusMerah = !statusMerah;
digitalWrite(LED_MERAH, statusMerah);
} else if (ir_code == CODE_KUNING) {
statusKuning = !statusKuning;
digitalWrite(LED_KUNING, statusKuning);
} else if (ir_code == CODE_HIJAU) {
statusHijau = !statusHijau;
digitalWrite(LED_HIJAU, statusHijau);
} else if (ir_code == CODE_BLINK) {
isBlinking = !isBlinking; // Toggle mode berkedip
}
IrReceiver.resume(); // Siapkan untuk sinyal berikutnya
}
// Jika mode berkedip aktif, jalankan pola kedip bergantian
if (isBlinking) {
blinkLEDs();
}
}
void blinkLEDs() {
// LED Merah ON, lainnya OFF
digitalWrite(LED_MERAH, HIGH);
digitalWrite(LED_KUNING, LOW);
digitalWrite(LED_HIJAU, LOW);
delay(300);
// LED Kuning ON, lainnya OFF
digitalWrite(LED_MERAH, LOW);
digitalWrite(LED_KUNING, HIGH);
digitalWrite(LED_HIJAU, LOW);
delay(300);
// LED Hijau ON, lainnya OFF
digitalWrite(LED_MERAH, LOW);
digitalWrite(LED_KUNING, LOW);
digitalWrite(LED_HIJAU, HIGH);
delay(300);
}