Добрый день, я в этом деле новичок есть код в нем есть 4 эффекта они переключаются автоматически, подскажите пожалуйста как сделать так что бы между режимами можно было переключаться только кнопкой одной Код (C++): #include <FastLED.h> #define DATA_PIN 9 //Пин светодиодов #define CLOCK_PIN 3 //Пин кнопки #define NUM_LEDS 31 //Количество светодиодов #define LED_TYPE WS2812B //Тип светодиодов #define COLOR_ORDER GRB //Порядок цветов #define BRIGHTNESS 255 //Яркость CRGB leds[NUM_LEDS]; void setup() { Serial.begin(57600); Serial.println("resetting"); LEDS.addLeds<LED_TYPE,DATA_PIN,COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip); LEDS.setBrightness(BRIGHTNESS); } typedef void (*SimplePatternList[])(); SimplePatternList gPatterns = { rgb, red, green, blue }; void fadeall() { for(int i = 0; i < NUM_LEDS; i++) { leds[i].nscale8(150); } } uint8_t gCurrentPatternNumber = 0; void loop() { gPatterns[gCurrentPatternNumber](); EVERY_N_SECONDS( 10 ) { nextPattern(); } // change patterns periodically } #define ARRAY_SIZE(A) (sizeof(A) / sizeof((A)[0])) void nextPattern() { gCurrentPatternNumber = (gCurrentPatternNumber + 1) % ARRAY_SIZE( gPatterns); } void rgb() { static uint8_t hue = 0; Serial.print("x"); for(int i = (NUM_LEDS)-1; i >= 0; i--) { leds[i] = CHSV(hue++, 255, 255); FastLED.show(); //leds[i] = CRGB::Red; fadeall(); delay(7); } } void red() { static uint8_t hue = 0; Serial.print("x"); for(int i = (NUM_LEDS)-1; i >= 0; i--) { //leds[i] = CHSV(hue++, 255, 255); FastLED.show(); leds[i] = CRGB::Red; fadeall(); delay(7); } } void green() { static uint8_t hue = 0; Serial.print("x"); for(int i = (NUM_LEDS)-1; i >= 0; i--) { //leds[i] = CHSV(hue++, 255, 255); FastLED.show(); leds[i] = CRGB::Green; fadeall(); delay(7); } } void blue() { static uint8_t hue = 0; Serial.print("x"); for(int i = (NUM_LEDS)-1; i >= 0; i--) { //leds[i] = CHSV(hue++, 255, 255); FastLED.show(); leds[i] = CRGB::Blue; fadeall(); delay(7); } }
Изменения минимальны - во второй строчке loop() вызывать next_pattern() по нажатию кнопки. Само собой, что нужно описать кнопку и ее опрос. все остальное можно не трогать