Здравствуйте, требуется небольшая помощь, написал код скетча, но он почему-то не работает должным образом, а нужно следующее, 4 светодиода и 1 кнопка без фиксации, и нужно этой кнопкой менять режим работы программы этих светодиодов, допустим: 1 нажатие - Бегущий огонь. 2 нажатие - Бегущая тень 3 нажатие - Мигают все светодиоды. 4 нажатие - Плавное зажигание и гашение всех светодиодов вот как-то так, код такой int button = 10; int ledcount = 4; int leds[4] = {4, 5, 6, 9}; int mode = 1;//номер режима boolean currButtState = false; boolean prevButtState = false; boolean pwmMode = false; int pwmValue = 0; void setup() { for (int i = 0; i < ledcount; i++) { pinMode(i, OUTPUT); } pinMode(button, INPUT_PULLUP); } void loop() { currButtState = debounce(prevButtState); if(prevButtState == HIGH && currButtState == LOW) mode++; if(mode > 4) mode = 1; switch (mode) { case 3: pwm(); break; case 4: blink(); break; case 2: lightflash(); break; case 1: darkflash(); break; } } boolean debounce(boolean prevState) { boolean currState = digitalRead(button); if (currState != prevState) { delay(5); currState = digitalRead(button); } return currState; } void darkflash() { for (int i = 0; i < ledcount; i++) { digitalWrite(leds, HIGH); } digitalWrite(leds[0], LOW); delay(100); for (int j = 1; j < ledcount; j++) { digitalWrite(leds[j], LOW); digitalWrite(leds[j - 1], HIGH); delay(100); } } void lightflash() { for (int i = 0; i < ledcount; i++) { digitalWrite(leds, LOW); } digitalWrite(leds[0], HIGH); delay(100); for (int j = 1; j < ledcount; j++) { digitalWrite(leds[j], HIGH); digitalWrite(leds[j - 1], LOW); delay(100); } } void blink() { for (int i = 0; i < ledcount; i++) { digitalWrite(leds, LOW); } delay(500); for (int i = 0; i < ledcount; i++) { digitalWrite(leds, HIGH); } delay(500); } void pwm() { if (pwmValue == 255) pwmMode = false; if (pwmValue == 0) pwmMode = true; for (int i = 0; i < ledcount; i++) { analogWrite(leds, pwmValue); delay(10); } if(pwmMode) pwmValue++; else pwmValue--; }
Код (Text): void setup() { for (int i = 0; i < ledcount; i++) { pinMode(leds[i], OUTPUT); // (!) } pinMode(button, INPUT_PULLUP); } // ... void loop() { prevButtState = currButtState; // (!) currButtState = debounce(prevButtState); if(prevButtState == HIGH && currButtState == LOW) mode++; if(mode > 4) mode = 1; switch (mode) { case 3: pwm(); break; case 4: blink(); break; case 2: lightflash(); break; case 1: darkflash(); break; } } // ...