Добрый день. Начал вникать в получение и отправку ИК сигналов при помощи Ардуино. С получением проблем никаких нет, много поясняющего материала и примеров. Но с отправкой данных проблемы. Есть примеры по стандартам (NEC и пр.), а пояснения по отправке в произвольной форме не нашел. Понял, что надо использовать функцию из библиотеки IRRemote. Код (C++): IrSender.sendRaw(buf, len, khz); при этом buf это массив, в котором прописано число, которое надо отправить. Не могу понять, как заполнять этот массив. Пока изучал, как принимать ИК-сигнал, натыкался на статью, где об этом говорилось. Что в массиве прописывается каждая цифра, из которого состоит число. Но потом уже не смог найти эту статью, когда начал разбираться с отправкой ИК-сигнала. В каком формате надо заполнять этот массив? Например, если есть число 123456. Что означает второй аргумент в функции - len? Как его вычислить?
Да, это понятно. Но как заполнить этот массив? Как внести в него число 123456? Надо каждую цифру отдельно заносить. Нужна отдельная кодировка или можно вносить [1], [2], [3] и т.д.?
В массив данные я конечно внесу. Я просто не могу понять про кодировку. В одном примере я вижу такое Код (C++): unsigned int buf[] = {1690, 560, 560, 560, 560, 560, 1690,1690, 560,1690,1690,1690, 1690,1690, 560, 560, 560,1690, 560, 560, 560, 560,1690,1690, 1690, 560,1690,1690,1690,1690 }; В примере Arduino для функции IRemot Код (C++): const uint8_t irSignalP[] PROGMEM = { 180, 90 /*Start bit*/, 11, 11, 11, 11, 11, 34, 11, 34/*0011 0xC of address LSB first*/, 11, 11, 11, 11, 11, 11, 11, 11/*0000*/, 11, 34, 11, 34, 11, 11, 11, 34/*1101 0xB*/, 11, 34, 11, 34, 11, 34, 11, 34/*1111*/, 11, 11, 11, 11, 11, 11, 11, 34/*0001 0x08 of command LSB first*/, 11, 34, 11, 11, 11, 11, 11, 11/*1000 0x01*/, 11, 34, 11, 34, 11, 34, 11, 11/*1110 Inverted 8 of command*/, 11, 11, 11, 34, 11, 34, 11, 34/*0111 inverted 1 of command*/, 11 /*stop bit*/}; Не могу понять правило заполнения массива.
Если надо передать то оно заносится в целиком в один элемент массива. Если надо передать отдельно каждую цифру, то они заносятся так кодировку чего?
В массиве код сигнала указан в формате Raw. Я никак не могу понять, как привести число к этому формату. У меня, например, пульт на кнопку включения выдает число 551489775. И мне его надо отправить через IrSender.sendRaw. Для этого свое число мне надо перенести в массив в формате Raw.