
Выполненные задания
- Подключение и мигание одного светодиода.
- Управление несколькими светодиодами с помощью массива.
- Считывание значения с потенциометра.
- Использование функции
random()
для случайного мигания. - Реализация нескольких световых режимов.
Изученные функции
Название функции | Описание |
---|---|
pinMode(pin, mode) | Настраивает пин как вход/выход. |
digitalWrite(pin, val) | Включает или выключает пин (HIGH или LOW). |
analogRead(pin) | Считывает аналоговое значение с пина (например, с потенциометра). |
map(val, a, b, c, d) | Преобразует значение из одного диапазона в другой. |
constrain(x, a, b) | Ограничивает значение в пределах [a, b]. |
random(min, max) | Возвращает случайное число в заданном диапазоне. |
delay(ms) | Пауза в миллисекундах. |
Описание работы
Создана световая гирлянда из 8 светодиодов, подключенных к Arduino Uno. С помощью потенциометра выбирается один из пяти световых режимов:
- Все светодиоды мигают одновременно.
- Светодиоды мигают поочередно.
- Цветное мигание (для RGB).
- Эффект свечи – случайное мигание.
- Бегущий огонь – движение света по цепочке.
Программа определяет режим, считывая значение потенциометра, и запускает соответствующую функцию отображения света.
Использованные компоненты
- Arduino Uno – 1 шт
- Потенциометр – 1 шт
- Светодиоды (обычные) – 8 шт
- Резисторы (220 Ом) – 8 шт
- Макетная плата (breadboard) – 1 шт
- Соединительные провода – множественно
- Источник питания (USB или батарея)
Схема подключения (Ühendamise skeem)
- Схема собрана и протестирована в Tinkercad.

Программа:
// Массив с пинами светодиодов
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);
}
}
Видео:

https://drive.google.com/file/d/1EfsSMUin2Z7rAjBSTDwz80NBpQbkH299/view?usp=sharing
Возможности применения в повседневной жизни
- Декоративная подсветка дома, окон, мебели.
- Украшение для праздников (ёлка, день рождения).
- Световая сигнализация.
- Учебный проект для знакомства с электроникой.
- Основа для умного освещения с расширением (датчики движения, Wi-Fi и т.п.)