Skip to content

Лёгкая библиотека для декодирования ИК протокола NEC (Японский вариант)

License

Notifications You must be signed in to change notification settings

GyverLibs/NecDecoder

Repository files navigation

latest PIO Foo Foo Foo

Foo

NecDecoder

Лёгкая библиотека для декодирования ИК протокола NEC (китайские пульты)

  • Библиотека не забирает никакие прерывания
  • Отсчет времени на micros()
  • Обработка команды повтора (удержание кнопки пульта)
  • Обработка и чтение занимает 500б Flash

Совместимость

Совместима со всеми Arduino платформами (используются Arduino-функции)

Содержание

Установка

  • Библиотеку можно найти по названию 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: найти библиотеку как при установке и нажать "Обновить"
  • Вручную: удалить папку со старой версией, а затем положить на её место новую. "Замену" делать нельзя: иногда в новых версиях удаляются файлы, которые останутся при замене и могут привести к ошибкам!

Инициализация

// чтение
NecDecoder ir;

// отправка
NecEncoder enc(pin);
NecEncoder enc(pin, del);
// pin - любой цифровой пин
// del - количество мкс, чтобы получить 38 кгц. По умолч 10
// (из расчёта 10мкс задержка + 3 мкс выполнение digitalWrite Arduino)

Использование

// NecDecoder
void tick();                        // Вызывать при ОТРИЦАТЕЛЬНОМ (FALLING) фронте на пине ИК приемника в прерывании
bool available();                   // Возвращает true, если корректный пакет прочитан или повторён (isDecoded() + isRepeated())
uint32_t readPacket();              // Прочитать пакет целиком (адрес + ~адрес + команда + ~команда)
uint8_t readAddress();              // Прочитать адрес
uint8_t readCommand();              // Прочитать команду
bool isDecoded();                   // Возвращает true, если пакет успешно декодирован
bool isRepeated();                  // Возвращает true, если принят флаг повтора команды

// NecEncoder
void send(uint8_t address, uint8_t data);   // отправить адрес и данные

Пример

Остальные примеры смотри в examples!
Приём

// приём команд с пульта
// приёмник подключать на прерывание по FALLING

#include <NecDecoder.h>
NecDecoder ir;

void setup() {
  Serial.begin(9600);
  // подключил на D2, прерывание 0
  attachInterrupt(0, irIsr, FALLING);
}

// в прерывании вызываем tick()
void irIsr() {
  ir.tick();
}

void loop() {
  // если пакет успешно принят
  if (ir.available()) {
    // выводим весь пакет (32 бита)
    Serial.print("0x");
    Serial.println(ir.readPacket(), HEX);

    // можно вывести только команду (8 бит)
    //Serial.println(ir.readCommand(), HEX);
  }
}

Отправка

#include <NecEncoder.h>
NecEncoder enc(3);

void setup() {
}

void loop() {
  enc.send(0x15, 0xaa);
  delay(1000);
}

Версии

  • v1.0
  • v1.1 - исправлены ошибки, добавлена возможность подключения обработчиков, добавлен контроль потока
  • v2.0 - завёз очень много оптимизации, стабильноси, надёжности, упрощения и удобства (by AlexGyver)
  • v2.1 - добавил отправку (NecEncoder)

Баги и обратная связь

При нахождении багов создавайте Issue, а лучше сразу пишите на почту alex@alexgyver.ru
Библиотека открыта для доработки и ваших Pull Request'ов!

При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать:

  • Версия библиотеки
  • Какой используется МК
  • Версия SDK (для ESP)
  • Версия Arduino IDE
  • Корректно ли работают ли встроенные примеры, в которых используются функции и конструкции, приводящие к багу в вашем коде
  • Какой код загружался, какая работа от него ожидалась и как он работает в реальности
  • В идеале приложить минимальный код, в котором наблюдается баг. Не полотно из тысячи строк, а минимальный код

About

Лёгкая библиотека для декодирования ИК протокола NEC (Японский вариант)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages