Проект 3: Светодиодный бегущий огонь
Описание
Бегущий светодиодный огонь мигает непрерывно, как текущая вода. Это распространённый декоративный свет, который широко используется в различных случаях, таких как праздничные мероприятия, витрины торговых центров, сценические выступления и т.д.
В этом проекте будет использована плата разработки Arduino и 5 светодиодов для создания простого бегущего светодиодного огня. Управляя последовательностью включения и выключения светодиодов, можно создать визуальный эффект, похожий на текущую воду.
Аппаратная часть
1. Плата разработки UNO R3 (ch340) x1
2. Светодиод x5
3. Резистор 220 Ом x5
4. Макетная плата x1
5. Соединительные провода
Принцип работы
Принцип работы бегущего светодиодного огня заключается в управлении последовательностью включения и выключения светодиодов с помощью платы разработки Arduino, что создаёт визуальный эффект, похожий на текущую воду. Плата Arduino подключена к анодам светодиодов через цифровые выходные пины, а катоды светодиодов подключены к GND (земле) платы через резисторы. С помощью написания кода для Arduino мы можем управлять уровнями высокого и низкого сигнала на цифровых выходах для включения и выключения светодиодов.
Схема подключения
Подключите аноды 5 светодиодов к цифровым пинам D2, D3, D4, D5, D6 на плате Arduino соответственно.
Подключите катоды каждого из пяти светодиодов к одному концу каждого из пяти резисторов 220 Ом.
Подключите другой конец каждого из пяти резисторов 220 Ом к GND (земле) платы разработки.

Пример кода
/*
Electronics Learning Starter Kit for Arduino
Project 3
LED Flowing Light
Edit By Keyes
*/
int ledPins[] = {2, 3, 4, 5, 6, }; // Define the pin of the LED
int ledCount = 5; // Number of LEDs
int delayTime = 100; // Delay time in ms
void setup() {
for (int i = 0; i < ledCount; i++) {
pinMode(ledPins[i], OUTPUT); // Set the LED pin to output mode
}
}
void loop() {
for (int i = 0; i < ledCount; i++) {
digitalWrite(ledPins[i], HIGH); // Light up the current LED
delay(delayTime); // Delay
digitalWrite(ledPins[i], LOW); // Light off the current LED
}
for (int i = ledCount - 2; i > 0; i--) {
digitalWrite(ledPins[i], HIGH); // Light up the current LED
delay(delayTime); // Delay
digitalWrite(ledPins[i], LOW); // Light off the current LED
}
}
Объяснение кода
Определение переменных
int ledPins[] = {2, 3, 4, 5, 6}; // Define the pins for the LEDs
int ledCount = 5; // Number of LEDs
int delayTime = 100; // Delay time in milliseconds
ledPins[]: Это массив целых чисел, который хранит номера цифровых пинов, к которым подключены светодиоды. В этом примере светодиоды подключены к цифровым пинам 2, 3, 4, 5 и 6 на плате Arduino.
ledCount: Эта переменная хранит общее количество светодиодов, что удобно использовать в циклах for.
delayTime: Управляет временем задержки между включением и выключением каждого светодиода в миллисекундах.
Функция настройки setup()
void setup() {
for (int i = 0; i < ledCount; i++) {
pinMode(ledPins[i], OUTPUT); // Set the LED pins as output mode
}
}
Функция setup() — это стандартная функция инициализации в программах Arduino, которая вызывается автоматически один раз в начале программы.
pinMode(ledPins[i], OUTPUT): Эта строка кода настраивает каждый пин светодиода в режим выхода. OUTPUT — это константа в языке Arduino, используемая для указания пина как выходного.
Основной цикл loop()
void loop() {
for (int i = 0; i < ledCount; i++) {
digitalWrite(ledPins[i], HIGH); // Turn on the current LED
delay(delayTime); // Delay
digitalWrite(ledPins[i], LOW); // Turn off the current LED
}
for (int i = ledCount - 2; i > 0; i--) {
digitalWrite(ledPins[i], HIGH); // Turn on the current LED
delay(delayTime); // Delay
digitalWrite(ledPins[i], LOW); // Turn off the current LED
}
}
Функция loop() — это основной цикл программы Arduino, который выполняется повторно после функции setup().
Первый цикл for отвечает за последовательное включение каждого светодиода, удерживая каждый включённым в течение времени, заданного delayTime, а затем выключая его.
Второй цикл for выключает светодиоды в обратном порядке, начиная со второго с конца светодиода и заканчивая вторым светодиодом.
digitalWrite(pin, value): Используется для управления уровнем сигнала на указанном пине. HIGH означает высокий уровень, включающий светодиод; LOW означает низкий уровень, выключающий светодиод.
Результат проекта
После загрузки примерного кода на плату разработки,

светодиоды будут последовательно загораться и гаснуть слева направо, а затем справа налево, создавая эффект бегущей воды.