#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <IRremote.hpp>
// Pin tanimlari / Pin definitions
const int IR_PIN = 4;
LiquidCrystal_I2C lcd(0x27, 16, 2);
unsigned long lastPress = 0;
const unsigned long DISPLAY_HOLD = 3000;
bool showingCode = false;
void showWaitMessage() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Kumandayi bas");
lcd.setCursor(0, 1);
lcd.print("Press remote");
}
void setup() {
// V1 default I2C: SDA=21 SCL=22 / V1 I2C default
Wire.begin(21, 22);
lcd.init();
lcd.backlight();
// Splash 3sn / Splash 3s
lcd.setCursor(3, 0);
lcd.print("BlueGrays");
lcd.setCursor(2, 1);
lcd.print("IR Remote v1");
delay(3000);
// IR alici baslat / Start IR receiver
IrReceiver.begin(IR_PIN, ENABLE_LED_FEEDBACK);
showWaitMessage();
}
void loop() {
// Display hold suresi doldu / Display hold expired
if (showingCode && millis() - lastPress > DISPLAY_HOLD) {
showWaitMessage();
showingCode = false;
}
if (IrReceiver.decode()) {
unsigned long code = IrReceiver.decodedIRData.decodedRawData;
// 0 = repeat code, gec / 0 = repeat, skip
if (code != 0) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tus kodu:");
lcd.setCursor(0, 1);
lcd.print("0x");
lcd.print(code, HEX);
lastPress = millis();
showingCode = true;
}
IrReceiver.resume();
}
}