Добрый день. Помогите доредактировать код настольной гирлянды чтобы можно было управлять ик пульта. На данный момент реализованно только однократное действие при нажатие на кнопку на пульте. main Код (C++): #include "FastLED.h" #define NUM_LEDS 7 #define LED_PIN 5 #define COLOR_ORDER GRB #define LED_TYPE WS2811 CRGB leds[NUM_LEDS]; #include <IRremote.h> #include <IRremoteInt.h> #define MASTER_BRIGHTNESS 255 #define STARTING_BRIGHTNESS 64 #define FADE_IN_SPEED 32 #define FADE_OUT_SPEED 20 #define DENSITY 255 IRrecv irrecv(2); // Указываем пин, к которому подключен приемник decode_results results; unsigned long knopka;//Переменная для хранения кода нажатой кнопки int ihue = 0; int thissat = 255; int thisdelay = 20; //colortwinkles enum { GETTING_DARKER = 0, GETTING_BRIGHTER = 1 }; void brightenOrDarkenEachPixel( fract8 fadeUpAmount, fract8 fadeDownAmount) { for( uint16_t i = 0; i < NUM_LEDS; i++) { if( getPixelDirection(i) == GETTING_DARKER) { // This pixel is getting darker leds[i] = makeDarker( leds[i], fadeDownAmount); } else { // This pixel is getting brighter leds[i] = makeBrighter( leds[i], fadeUpAmount); // now check to see if we've maxxed out the brightness if( leds[i].r == 255 || leds[i].g == 255 || leds[i].b == 255) { // if so, turn around and start getting darker setPixelDirection(i, GETTING_DARKER); } } } } setup Код (C++): void setup() { delay(3000); FastLED.addLeds<LED_TYPE,LED_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); FastLED.setBrightness(MASTER_BRIGHTNESS); Serial.begin(9600);// Запускаем серийный порт irrecv.enableIRIn(); // Запускаем прием pinMode(5, OUTPUT);//Определяем 12-й пин на вход } void Код (C++): void loop() { if (irrecv.decode(&results)) // Если данные пришли { knopka=results.value; Serial.println(knopka, DEC);// Отправляем полученную данную в консоль if (knopka=results.value){ menu(); irrecv.resume(); // Принимаем следующую команду } } } menu Код (C++): switch (knopka) { case 11419: blink(); //irrecv.resume(); break; case 27803: twinki(); //delay (500); //irrecv.resume(); break; case 21661: rainbow_fade(); break; } }
Держи Бро!Не благодари! Код (C++): #include "FastLED.h" #define NUM_LEDS 7 #define LED_PIN 5 #define COLOR_ORDER GRB #define LED_TYPE WS2811 CRGB leds[NUM_LEDS]; #include <IRremote.h> #include <IRremoteInt.h> #define MASTER_BRIGHTNESS 255 #define STARTING_BRIGHTNESS 64 #define FADE_IN_SPEED 32 #define FADE_OUT_SPEED 20 #define DENSITY 255 IRrecv irrecv(2); // Указываем пин, к которому подключен приемник decode_results results; unsigned long knopka;//Переменная для хранения кода нажатой кнопки int ihue = 0; int thissat = 255; int thisdelay = 20; //colortwinkles enum { GETTING_DARKER = 0, GETTING_BRIGHTER = 1 }; void brightenOrDarkenEachPixel( fract8 fadeUpAmount, fract8 fadeDownAmount) { for( uint16_t i = 0; i < NUM_LEDS; i++) { if( getPixelDirection(i) == GETTING_DARKER) { // This pixel is getting darker leds[i] = makeDarker( leds[i], fadeDownAmount); } else { // This pixel is getting brighter leds[i] = makeBrighter( leds[i], fadeUpAmount); // now check to see if we've maxxed out the brightness if( leds[i].r == 255 || leds[i].g == 255 || leds[i].b == 255) { // if so, turn around and start getting darker setPixelDirection(i, GETTING_DARKER); } } } } switch (knopka) { case 11419: blink(); //irrecv.resume(); break; case 27803: twinki(); //delay (500); //irrecv.resume(); break; case 21661: rainbow_fade(); break; } } void setup() { delay(3000); FastLED.addLeds<LED_TYPE,LED_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); FastLED.setBrightness(MASTER_BRIGHTNESS); Serial.begin(9600);// Запускаем серийный порт irrecv.enableIRIn(); // Запускаем прием pinMode(5, OUTPUT);//Определяем 12-й пин на вход } void loop() { if (irrecv.decode(&results)) // Если данные пришли { knopka=results.value; Serial.println(knopka, DEC);// Отправляем полученную данную в консоль if (knopka=results.value){ menu(); irrecv.resume(); // Принимаем следующую команду } } }