Нужно сделать так, чтобы при первом нажатии на кнопку диод включался, а при повторном нажатии выключался. Много значений results.value потому что пульт по какой-то причине через раз скидывает разные значения. Код (C++): #include "IRremote.h" IRrecv irrecv(2); // указываем вывод, к которому подключен приемник decode_results results; #define r 11 #define g 10 #define b 9 void setup() { irrecv.enableIRIn(); // запускаем прием Serial.begin(9600); pinMode(r, OUTPUT); pinMode(g, OUTPUT); pinMode(b, OUTPUT); } void loop() { if ( irrecv.decode( &results )) { // если данные пришли Serial.println( results.value, HEX ); if (results.value == 0xDAEA83EC || results.value == 0xBF702887 || results.value == 0xB3A56E15 || results.value == 0x8E57DA3D || results.value == 0x324F8E29 || results.value == 0xA1063983 || results.value == 0x802F1877) { digitalWrite(r, HIGH); } irrecv.resume(); // принимаем следующую команду } }
! (логическое отрицание) True, если операнд false, и наоборот, например: Код (C++): if (!x) { // ... } http://arduino.ru/Reference/Boolean не то что вам нужно?
Код для включения светодиода есть, а для выключения где? У Вас, помимо кодов нажатия кнопки/кнопок, какие-то другие коды приходят? Если нет, то смысла проверять сами коды нет, достаточно самого факта получения кода (любого). Просто инвертируйте состояние выхода на светодиод: Код (C++): digitalWrite(r, !digitalRead(r));