Загрузка данных


// Определяем пины для 6 светодиодов и кнопки
const int ledPins[] = {2, 3, 4, 5, 6, 7}; 
const int numLeds = 6;                    // Количество светодиодов изменено на 6
const int buttonPin = 8;                  // Пин кнопки изменен на 8

int currentMode = 0;       // Текущий режим анимации
int lastButtonState = LOW; // Предыдущее состояние кнопки

void setup() {
  // Настраиваем 6 пинов светодиодов на выход
  for (int i = 0; i < numLeds; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
  // Настраиваем пин кнопки на вход
  pinMode(buttonPin, INPUT);
}

void loop() {
  // Считываем состояние кнопки
  int buttonState = digitalRead(buttonPin);

  // Проверяем нажатие (переход из LOW в HIGH)
  if (buttonState == HIGH && lastButtonState == LOW) {
    currentMode = (currentMode + 1) % 2; // Переключаем режим (0 или 1)
    delay(50); // Защита от дребезга контактов
  }
  lastButtonState = buttonState;

  // Запуск выбранного режима для 6 светодиодов
  if (currentMode == 0) {
    runningLight();
  } else {
    fillUpLight();
  }
}

// Режим 0: Бегущий одиночный огонек (для 6 светодиодов)
void runningLight() {
  for (int i = 0; i < numLeds; i++) {
    digitalWrite(ledPins[i], HIGH);
    delay(100);
    digitalWrite(ledPins[i], LOW);
    
    if (digitalRead(buttonPin) == HIGH) return; 
  }
}

// Режим 1: Постепенное заполнение шкалы (для 6 светодиодов)
void fillUpLight() {
  for (int i = 0; i < numLeds; i++) {
    digitalWrite(ledPins[i], HIGH);
    delay(100);
    if (digitalRead(buttonPin) == HIGH) return;
  }
  for (int i = numLeds - 1; i >= 0; i--) {
    digitalWrite(ledPins[i], LOW);
    delay(100);
    if (digitalRead(buttonPin) == HIGH) return;
  }
}