const int ledPins[] = {2, 3, 4, 5, 6, 7}; // Пины светодиодов
const int numLeds = 6;
const int buttonPin = 8; // Пин кнопки
const int potPin = A0; // Пин потенциометра
bool randomFlash = false; // Флаг режима "случайные вспышки"
void setup() {
// Инициализация пинов светодиодов как выходы
for (int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
}
// Инициализация пина кнопки как вход
pinMode(buttonPin, INPUT);
// Инициализация генератора случайных чисел
randomSeed(analogRead(A1)); // Чтение с неиспользуемого аналогового пина
}
void loop() {
if (!randomFlash) {
// Чтение значения потенциометра
int potValue = analogRead(potPin);
// Преобразование значения в количество светодиодов (от 0 до 6)
int ledCount = map(potValue, 0, 1023, 0, numLeds);
// Выключаем все светодиоды
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
}
// Включаем выбранное количество светодиодов
for (int i = 0; i < ledCount; i++) {
digitalWrite(ledPins[i], HIGH);
}
// Проверка нажатия кнопки
if (digitalRead(buttonPin) == HIGH) { // Кнопка нажата
delay(50); // Задержка для антидребезга
if (digitalRead(buttonPin) == HIGH) {
randomFlash = true;
// Выключаем все светодиоды перед началом случайных вспышек
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
}
}
}
} else {
// Режим "случайные вспышки"
int ledIndex = random(numLeds); // Случайный индекс светодиода
int flashTime = random(100, 500); // Случайная длительность вспышки (мс)
digitalWrite(ledPins[ledIndex], HIGH);
delay(flashTime);
digitalWrite(ledPins[ledIndex], LOW);
// Задержка между вспышками
delay(random(100, 500));
}
}
Построить схему и написать программу «случайные вспышки» для 6 светодиодов. Потенциометром изначально выбираем количество светодиодов (они должны светить). Затем нажимаем кнопку и начинается работа алгоритма “случайные вспышки”.