Доброго времени суток! Пишу скетч для блока управления освещением дома, и все бы ничего, но вот добрался до балкона, решил сделать RGB (боже как стандартно), написал несколько режимов работы ленты и теперь хочу свободно между ними переключаться (сам выбирать режим и замыкать в цикл), но не знаю как написать это помогите, может кто сталкивался с подобным (да 100% кто- то сталкивался). Скетч обозначу так, потому что сам он огромный ОГОГО void loop() { //бла бла бла //бла бла //первый режим for (если, тогда, и еще это) { мигай вот так вот } //а это второй for (если, тогда, и еще это) { мигай вот так вот } //а это вот третий for (если, тогда, и еще это) { мигай вот так вот } //четвертый for (если, тогда, и еще это) { мигай вот так вот } }
Код (C++): #define RED_PIN 4 #define GREEN_PIN 5 #define BLUE_PIN 6 #define BUTTON_PIN 8 // кнопка к пину и GND, подтяжка встроенная, параллельно контактам кнопки конденсатор 104 enum {ALL_OFF, RED_ON, BLUE_ON, FADE, SPARKS, END}; // возможные эффекты, метка END всегда последняя byte CurrentEffect; void setup() { pinMode(RED_PIN, OUTPUT); pinMode(GREEN_PIN, OUTPUT); pinMode(BLUE_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT_PULLUP); // активируем подтяжку CurrentEffect = ALL_OFF; // задаем эффект при первом включении } void loop() { readButton(); effectManager(); } void readButton() { if (!digitalRead(BUTTON_PIN)) CurrentEffect++; if (END == CurrentEffect) CurrentEffect = ALL_OFF; // закольцовываем эффекты } void effectManager() { switch(CurrentEffect) { case ALL_OFF: { digitalWrite (RED_PIN, LOW); digitalWrite (GREEN_PIN, LOW); digitalWrite (BLUE_PIN, LOW); break; } case FADE: { // for (если, тогда, и еще это) break; } case SPARKS: { // for (если, тогда, и еще это) break; } } // switch } // loop