#include <NecDecoder.h> // подключаем библиотеки
#include <GyverOLED.h>
NecDecoder ir; // создаем объект
GyverOLED<SSD1306_128x64, OLED_BUFFER> oled; // дисплей
#define LED_PIN 12 // пин светодиода
#define IR_5 0x1C // команда с пульта (кнопка 5)
#define IR_2 0x18 // команда с пульта (кнопка 2)
/* КОДЫ ДЛЯ МОЕГО ПУЛЬТА
#define IR_1 0x45 // команда с пульта (кнопка 1)
#define IR_2 0x46 // команда с пульта (кнопка 2)
#define IR_3 0x47 // команда с пульта (кнопка 3)
#define IR_4 0x44 // команда с пульта (кнопка 4)
#define IR_5 0x40 // команда с пульта (кнопка 5)
#define IR_6 0x43 // команда с пульта (кнопка 6)
#define IR_7 0x7 // команда с пульта (кнопка 7)
#define IR_8 0x15 // команда с пульта (кнопка 8)
#define IR_9 0x9 // команда с пульта (кнопка 9)
#define IR_0 0x16 // команда с пульта (кнопка 0)
#define IR_STAR 0x19 // команда с пульта (кнопка *)
#define IR_HASH 0xD // команда с пульта (кнопка #)
#define IR_UP 0x18 // команда с пульта (кнопка UP)
#define IR_DOWN 0x52 // команда с пульта (кнопка DOWN)
#define IR_LEFT 0x8 // команда с пульта (кнопка LEFT)
#define IR_RIGHT 0x5A // команда с пульта (кнопка RIGHT)
#define IR_OK 0x1C // команда с пульта (кнопка OK)
*/
void irIsr() { // в прерывании вызываем tick()
ir.tick();
}
void setup() {
oled.init();
oled.setContrast(100);
pinMode(LED_PIN, OUTPUT); // пин светодиода настраеваем как выход
Serial.begin(115200); // для коммандной строки
attachInterrupt(0, irIsr, FALLING); // подключил на D2, прерывание 0 (для nano)
}
void loop() {
oled.clear();
static String btn = F("");
if (ir.available()) { // если код считан с пульта...
switch (ir.readCommand()) { // здесь пишем условия по нажатию каждой из кнопок
case IR_1: btn = F("1"); break;
case IR_2: btn = F("2"); break;
case IR_3: btn = F("3"); break;
case IR_4: btn = F("4"); break;
case IR_5: if (digitalRead(LED_PIN) == LOW) digitalWrite(LED_PIN, HIGH);
else digitalWrite(LED_PIN, LOW);
btn = F("5");
break;
case IR_6: btn = F("6"); break;
case IR_7: btn = F("7"); break;
case IR_8: btn = F("8"); break;
case IR_9: btn = F("9"); break;
case IR_0: btn = F("0"); break;
case IR_STAR: btn = F("*"); break;
case IR_HASH: btn = F("#"); break;
case IR_UP: btn = F("UP"); break;
case IR_DOWN: btn = F("DOWN"); break;
case IR_LEFT: btn = F("LEFT"); break;
case IR_RIGHT: btn = F("RIGHT"); break;
case IR_OK: btn = F("OK"); break;
}
}
oled.setCursorXY(0, 0);
oled.print(F("код:"));
oled.setCursorXY(30, 0);
oled.print(ir.readData(), HEX);
oled.setCursorXY(0, 20);
oled.print(F("Вы нажали:"));
oled.setCursorXY(70, 20);
oled.print(btn);
oled.update();
}