// Пины светодиодов
const int leds[] = {2, 3, 5, 8, 9};
const int numLeds = sizeof(leds) / sizeof(leds[0]);
const int buttonPin = 10;
int ledIndex = 0; // Индекс текущего светодиода
unsigned long previousMillis = 0; // Время последнего действия
const long interval = 500; // Интервал между действиями
void setup() {
for (int i = 0; i < numLeds; i++) {
pinMode(leds[i], OUTPUT); // Настройка пинов на вывод
}
pinMode(buttonPin, INPUT); // Настройка пина кнопки на ввод
}
void loop() {
unsigned long currentMillis = millis();
int buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
// Включаем светодиоды последовательно без блокировки
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (ledIndex < numLeds) {
digitalWrite(leds[ledIndex], HIGH); // Включаем текущий светодиод
ledIndex++;
} else {
// Если все светодиоды уже включены, можно начать сначала или просто остановиться
for (int i = 0; i < numLeds; i++) {
digitalWrite(leds[i], LOW); // Выключаем все светодиоды
}
ledIndex = 0;
}
}
} else {
// Выключаем и включаем светодиоды поочерёдно без блокировки
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (ledIndex < numLeds) {
digitalWrite(leds[ledIndex], HIGH); // Включаем текущий светодиод
delay(250); // Короткая задержка
digitalWrite(leds[ledIndex], LOW); // Выключаем текущий светодиод
ledIndex++;
} else {
ledIndex = 0;
}
}
}
}