По многочисленным просьбам, пример как изменять яркость светодиодов удержанием кнопки на пульте дистанционного управления
код из видео
#include <IRremote.h> // https://github.com/shirriff/Arduino-IRremote #define RECV_PIN 11 // IR приемник #define OUT1 9// выхода на мосфеты #define OUT2 10 #define POWER_KEY 0x40BF30CF // коды пульта ДУ #define KEY1 0x40BF7887 // v- #define KEY2 0x40BFF807 // v+ #define KEY3 0xC03FC03F #define KEY4 0xC03F40BF byte analogData1, analogData2 = 0; // значения аналогово выхода uint32_t val; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { irrecv.enableIRIn(); //Serial.begin(9600); } void loop() { if (irrecv.decode(&results)) { // если пришел пакет if (results.value != 0xFFFFFFFF){ // и этот пакет не FF val = results.value; // сохраняем правельный пакет в переменную } // если пришел FF, соответственно пропускаем. /// сверяем значение из переменной val.. если пришла команда повтора (пакет с FF) /// в переменной останется прошлый, правельный, пакет и код выполнится повторно. if (val == KEY1){ if (analogData1 != 0)analogData1--; // если шим не равно 0 отнимаем 1 analogWrite(OUT1, analogData1); // устанавливаем значение в выход } if (val == KEY2){ // и это вторая кнопка if (analogData1 < 255) analogData1++; // если шим меньше 255 прибовляем 1 analogWrite(OUT1, analogData1); // устанавливаем значение } if (val == KEY4){ if (analogData2 != 0)analogData2--; analogWrite(OUT2, analogData2); } if (val == KEY3){ if (analogData2 < 255) analogData2++; analogWrite(OUT2, analogData2); } /// if (results.value == POWER_KEY) { if (analogData1 != 0 && analogData2 != 0){ // если ШИМ неравно 0 analogWrite(OUT1, 0); // выключаем analogWrite(OUT2, 0); analogData1 = 0; analogData2 = 0; } else { analogWrite(OUT1, 255); // включаем analogWrite(OUT2, 255); analogData1 = 255; analogData2 = 255; } } /*Serial.println(val, HEX); //// ТЕСТЫ! Serial.println(results.value, HEX); Serial.println(analogData1); Serial.println(analogData2); Serial.println(); */ irrecv.resume(); } }