Note
Для передачи по ИК кастомных данных используйте библиотеку GyverWire
Лёгкая библиотека для декодирования ИК протокола NEC (99% китайских пультов)
- Библиотека не забирает прерывания
- Отсчет времени на micros()
- Обработка команды повтора (удержание кнопки пульта)
Совместима со всеми Arduino платформами (используются Arduino-функции)
Чтение данных с ИК приёмника:
// Вызывать в FALLING прерывании ИК приемника
void tick();
// Есть данные для чтения (новые или повтор)
bool available();
// Возвращает true, если принят флаг повтора команды
bool isRepeated();
// Прочитать данные (адрес + команда)
uint16_t readData();
// Прочитать адрес
uint8_t readAddress();
// Прочитать команду
uint8_t readCommand();
// Прочитать весь пакет NEC
uint32_t readPacket();
Отправка данных с ИК светодиода:
NecEncoder::send(uint8_t pin, uint8_t addr, uint8_t cmd);
Остальные примеры смотри в examples!
#include <NecDecoder.h>
NecDecoder ir;
// в прерывании вызываем tick()
void irIsr() {
ir.tick();
}
void setup() {
Serial.begin(115200);
// подключил на D2, прерывание 0
attachInterrupt(0, irIsr, FALLING);
}
void loop() {
// если пакет успешно принят
if (ir.available()) {
Serial.print("0x");
// адрес + команда (16 бит)
Serial.println(ir.readData(), HEX);
// команда (8 бит)
// Serial.println(ir.readCommand(), HEX);
// весь пакет (32 бита)
// Serial.println(ir.readPacket(), HEX);
}
}
#include <NecEncoder.h>
#define LED_PIN 3
void setup() {
}
void loop() {
NecEncoder::send(LED_PIN, 0x15, 0xaa);
delay(1000);
}
- v1.0
- v1.1 - исправлены ошибки, добавлена возможность подключения обработчиков, добавлен контроль потока
- v2.0 - завёз очень много оптимизации, стабильноси, надёжности, упрощения и удобства (by AlexGyver)
- v2.1 - добавил отправку (NecEncoder)
- v3.0 - библиотека переписана. Уменьшен вес, улучшена стабильность
- Библиотеку можно найти по названию NecDecoder и установить через менеджер библиотек в:
- Arduino IDE
- Arduino IDE v2
- PlatformIO
- Скачать библиотеку .zip архивом для ручной установки:
- Распаковать и положить в C:\Program Files (x86)\Arduino\libraries (Windows x64)
- Распаковать и положить в C:\Program Files\Arduino\libraries (Windows x32)
- Распаковать и положить в Документы/Arduino/libraries/
- (Arduino IDE) автоматическая установка из .zip: Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… и указать скачанный архив
- Читай более подробную инструкцию по установке библиотек здесь
- Рекомендую всегда обновлять библиотеку: в новых версиях исправляются ошибки и баги, а также проводится оптимизация и добавляются новые фичи
- Через менеджер библиотек IDE: найти библиотеку как при установке и нажать "Обновить"
- Вручную: удалить папку со старой версией, а затем положить на её место новую. "Замену" делать нельзя: иногда в новых версиях удаляются файлы, которые останутся при замене и могут привести к ошибкам!
При нахождении багов создавайте Issue, а лучше сразу пишите на почту [email protected]
Библиотека открыта для доработки и ваших Pull Request'ов!
При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать:
- Версия библиотеки
- Какой используется МК
- Версия SDK (для ESP)
- Версия Arduino IDE
- Корректно ли работают ли встроенные примеры, в которых используются функции и конструкции, приводящие к багу в вашем коде
- Какой код загружался, какая работа от него ожидалась и как он работает в реальности
- В идеале приложить минимальный код, в котором наблюдается баг. Не полотно из тысячи строк, а минимальный код