Разделить полученный сигнал на отдельные пакеты
- Войдите на сайт для отправки комментариев
Пт, 04/03/2022 - 16:15
Приветствую всех. Подскажите пожалуйста каким способом можно решить мою проблему.
Через ИК-датчик на ардуино я отправляю команду с некого пульта.
На ардуино приходит команда в 16ричной системе 1DCF, она же в двоичной 1110111001111. Я знаю, что в этой команде заложены 3 переменных (условно назову их Byte1, Byte2, Byte3. Byte1=1110111, Byte2=00 и Byte3=1111. Как мне в программе разделить получаемый код на части, чтобы я мог сравнивать значения этих байтов с нужными?
#include <IRremote.h> // подключаем библиотеку для IR приемника IRrecv irrecv(11); // указываем пин, к которому подключен IR приемник decode_results results; int code; void setup() { irrecv.enableIRIn(); // запускаем прием инфракрасного сигнала Serial.begin(9600); // подключаем монитор порта pinMode(11, INPUT); // пин 11 будет входом (англ. «intput») } void loop() { if (irrecv.decode(&results)) // если данные пришли выполняем команды { Serial.println(results.value, HEX); // отправляем полученные данные на порт irrecv.resume(); // принимаем следующий сигнал на ИК приемнике } }
битовыми операциями, типа
Можете пожалуйста поподробнее показать, как это будет выглядеть для всех 3х пакетов?
Может так? но не уверен
а поучиться/почитать не желаете?
Битовые операции в си (&, |, ^, ~, <<, >>) (learnc.info)
byte1 у вас сдвиг вправо на 6
byte2 сдвиг вправо и логическая И для обнуления старших битов
byte3 соответственно логическая И для обнуления старших битов
Спасибо за помощь, всё получилось.
Сделал вот так:
Спасибо за помощь, всё получилось.
Сделал вот так:
а если за время между byte1 и byte2 к примеру value изменится?
а если за время между byte1 и byte2 к примеру value изменится?
С какого ЛСД ей меняться? Она же не в прерывании значение получает.
а если за время между byte1 и byte2 к примеру value изменится?
С какого ЛСД ей меняться? Она же не в прерывании значение получает.
так откуда жеж я знаю, как там работает библиотека IRREMOTE )))
PS а вдруг?
PPS бережёного...
ЗЫ а три верхних битика тоже нулить не надобно?
ua6em, это кому вопрос? Мне кажется ТС решил проблему, нет?
не знаю, я библиотеку не копал, ЕвгенийП говорит, что прерывание не использует, если использует то нет
PS я всё таки железячник, считаю, что строки 12 и 13 были бы более правильными