Использование потенциометра

Задание 2 — Использование потенциометр

компоненты:

Схема подключения:

Сначала разместите светодиод и потенциометр на макетной плате и подключите их к плате разработки, как показано на рисунке.

Потенциометр используется для регулировки частоты мигания светодиода.

// Массив с пинами светодиодов
int ledPins[] = {12, 8, 11, 7, 10, 6, 9, 5 };
int arrayLength = sizeof(ledPins) / sizeof(ledPins[0]);
 
void setup() {
  for (int i = 0; i < arrayLength; i++) {
    pinMode(ledPins[i], OUTPUT);
  }
  randomSeed(analogRead(0)); // Для эффекта свечи
}
 
void loop() {
  int potValue = analogRead(A0);  // Считываем значение потенциометра
  int mode = map(potValue, 0, 1023, 0, 4); // Преобразуем значение в режим
  mode = constrain(mode, 0, 4);  // Убедимся, что значение в диапазоне 0-4
 
  switch (mode) {
    case 0:
      allBlink();
      break;
    case 1:
      sequenceBlink();
      break;
    case 2:
      candleEffect();
      break;
    case 3:
      runningLight();
      break;
    case 4:
      pingPong();
      break;
  }
}
 
// Режим 0: Все мигают одновременно
void allBlink() {
  for (int i = 0; i < arrayLength; i++) {
    digitalWrite(ledPins[i], HIGH);
  }
  delay(300);
  for (int i = 0; i < arrayLength; i++) {
    digitalWrite(ledPins[i], LOW);
  }
  delay(300);
}
 
// Режим 1: Последовательное мигание (от края к краю)
void sequenceBlink() {
  for (int i = 0; i < arrayLength; i++) {
    digitalWrite(ledPins[i], HIGH);
    delay(100);
    digitalWrite(ledPins[i], LOW);
  }
}
 
// Режим 2: Эффект свечи (рандомно-случайный порядок)
void candleEffect() {
  for (int i = 0; i < arrayLength; i++) {
    int flickerChance = random(0, 10);
    if (flickerChance < 3) {
      digitalWrite(ledPins[i], HIGH);
      delay(random(10, 100));
      digitalWrite(ledPins[i], LOW);
      delay(random(10, 50));
    }
  }
}
 
// Режим 3: Бегущий огонь
void runningLight() {
  for (int i = 0; i < arrayLength; i++) {
    digitalWrite(ledPins[i], HIGH);
    delay(100);
    digitalWrite(ledPins[i], LOW);
  }
}
 
// Режим 4: режим пинг-понг (маятник)
void pingPong() {
  for (int i = 0; i < arrayLength; i++) {
    digitalWrite(ledPins[i], HIGH);
    delay(80);
    digitalWrite(ledPins[i], LOW);
  }
  for (int i = arrayLength - 2; i > 0; i--) {
    digitalWrite(ledPins[i], HIGH);
    delay(80);
    digitalWrite(ledPins[i], LOW);
  }
}