Здравствуйте! Подскажите пожалуйста в чем дело. Хочу ик-пультом управлять эффектами на ленте. По отдельности ик приемник принимает стабильные значения кнопок, но если включить в loop() функцию анимации ленты, то на каждую кнопку пульта при нажатии приходят каждый раз разные значения, что делает невозможным их обработку Код (C++): #include "FastLED.h" #include <IRremote.h> #define LED_COUNT 31 #define LED_PIN 3 #define RECV_PIN 11 struct CRGB leds[LED_COUNT]; uint8_t hue = 29; int del = 20; byte idex = 255; byte meteorLength = 30; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { delay(2000); LEDS.addLeds<WS2812B, LED_PIN, GRB>(leds, LED_COUNT); LEDS.setBrightness(200); Serial.begin(9600); irrecv.enableIRIn(); } void loop(){ irControll(); meteorShower(); } void irControll() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); switch ( results.value ) { case 0xF700FF: del +=10; break; case 0xFF02FD: del -=10; break; } irrecv.resume(); } } void meteorShower(){ // код анимации светодиодов delay(del); }
разобрался, пульт конфликтовал с библиотекой fastLed, нужно было разделить обработку сигнала на ленту и от ик приемника Код (C++): void loop(){ if ( irrecv.decode( &results ) ) { irControll(); } if ( irrecv.isIdle() ) { meteorShower(); } }