Недавно начал разбираться с ардуиной, т.е. новичок еще совсем. Вот возник вопрос: Есть вот такая конструкция: Есть вот такой скетч: #include <IRremote.h> int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value } } Есть пульт, который пришел мне вместе с ардуиной, в общем после заливки скетча и включения монитора порта при нажатии кнопок получаю: 0-FF6897 1-FF30CF 2-FF18E7 3-FF7A85 4-FF10EF 5-FF38C7 6-FF5AA5 7-FF42BD 8-FF4AB5 9-FF52AD Ну и на другие кнопки другие сигналы соответственно, при долгом нажатии выдает FFFFFF вне зависимости от кнопки. Вопрос, как мне сделать так чтоб при получении сигнала с кнопки например 1, т.е. FF30CF мне включить лампочку, ну или сделать какое то действие. Понимаю что надо присвоить известные теперь мне значения каким-то переменным, и потом сравнивать полученные значения, но как сделатне догоняю. Надеюсь на помощь.
Код (Text): switch (results.value) { case 0xff6897: { // turn lights on break; } case 0xff30cf: { // turn lights off break; } // etc }
Долго не отвечал, времени не было, большое спасибо все заработало. Позвольте еще вопрос, у этого пульта сначала идет определенный сигнал, потом FFFFFF, как бы так сделать, чтоб например пока держишь кнопку свет горит, отпускаешь гаснет. на мониторе порта такое действие выглядит так: FF6897 FFFFFF FFFFFF FFFFFF ...
Можно запоминать последнее значение, отличное от FFFFFF, а FFFFFF трактовать как это записанное значение. Для того, чтобы по отсутствию сигнала выключаться, видимо, надо запоминать так же время последнего сигнала, а по прерыванию таймера сбрасывать состояние, если с момента последней команды прошло больше какого-то времени (например 50мс, ну или с какой скоростью пульт посылает сигналы?)