Задание 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);
}
}
