Разные коды с кнопок пульта в irremoteesp8266

Тема в разделе "ESP8266, ESP32", создана пользователем Gomez, 10 ноя 2022.

  1. Gomez

    Gomez Гик

    Какие бы примеры из свежей библиотеки IRremoteESP8266 не использовал, при нажатии на любую кнопку пульта Philips выдаётся строго попеременно две команды.
    Например, на одной кнопке 182C и 102C поочередно,
    на другой 10 и 810.
    Это баг или фича?
    Мне что, в скетче писать OR?
    "Если 182C или 102C..."? :)
     
  2. parovoZZ

    parovoZZ Гуру

    а пульт филипс по какому протоколу работает?
     
  3. Gomez

    Gomez Гик

    Вроде RC5, если верить.
    Вот три нажатия на одну и ту же кнопку.
    А вот uint32_t command не меняется и вроде у разных кнопок разная. Может, её использовать? :)

    Код (C++):
    Timestamp : 000136.006
    Library   : v2.8.4

    Protocol  : RC5X
    Code      : 0x182B (13 Bits)
    uint16_t rawData[19] = {1784, 1790,  1758, 892,  872, 900,  872, 900,  874, 900,  872, 1798,  1758, 1790,  1758, 1790,  872, 902,  872};  // RC5X 182B
    uint32_t address = 0x0;
    uint32_t command = 0x6B;
    uint64_t data = 0x182B;


    Timestamp : 000138.301
    Library   : v2.8.4

    Protocol  : RC5X
    Code      : 0x102B (13 Bits)
    uint16_t rawData[21] = {1784, 892,  874, 900,  874, 900,  874, 900,  874, 900,  872, 900,  874, 1798,  1758, 1766,  1782, 1790,  872, 900,  874};  // RC5X 102B
    uint32_t address = 0x0;
    uint32_t command = 0x6B;
    uint64_t data = 0x102B;


    Timestamp : 000140.218
    Library   : v2.8.4

    Protocol  : RC5X
    Code      : 0x182B (13 Bits)
    uint16_t rawData[19] = {1786, 1788,  1760, 892,  874, 898,  874, 900,  874, 900,  874, 1776,  1780, 1788,  1758, 1788,  874, 900,  874};  // RC5X 182B
    uint32_t address = 0x0;
    uint32_t command = 0x6B;
    uint64_t data = 0x182B;
    Только в описании протокола пишется, что каждый пакет 14 bits. And each bit is 1.728ms wide.
     
    Последнее редактирование: 10 ноя 2022
  4. Gomez

    Gomez Гик

    В общем, я тут порыл и вроде как это абсолютно законно, что ТВ-пульт отправляет поочерёдно два сигнала. :)
    Типа чтобы реагировать на продолжительное нажатие, например, для увеличения громкости.
    Так что сделяль
    Код (C++):
    if (results.value == 4140 || results.value == 6188)
    и всё прекрасно работает.
     
  5. parovoZZ

    parovoZZ Гуру

    При наличии логического анализатора все вопросы снимаются в течение 5 минут. Настоятельно советую.
     
  6. Gomez

    Gomez Гик

    В смысле, мозгов?! :D
    Шучу, я уже посмотрел, что это. Но вроде для использования раз в год как-то жалко покупать. :(
    Тут еще пробую из пульта, который умеет передавать все заученные команды на другой пульт ("обучение одной кнопкой"), считать с помощью IRremoteESP8266 rawData. Но она вашпе при каждой передаче разная. :(
    А других библиотек, работающих с ESP8266 + rawData вроде нет. Печаль.
    Хотя rawData - это примерно цифровое представление физических процессов ;), может, и так проканает.
     
    Последнее редактирование: 13 ноя 2022