Проект 3: Светодиодный бегущий огонь

IMG_256

Описание

Бегущий светодиодный огонь мигает непрерывно, как текущая вода. Это распространённый декоративный свет, который широко используется в различных случаях, таких как праздничные мероприятия, витрины торговых центров, сценические выступления и т.д.

В этом проекте будет использована плата разработки Arduino и 5 светодиодов для создания простого бегущего светодиодного огня. Управляя последовательностью включения и выключения светодиодов, можно создать визуальный эффект, похожий на текущую воду.

Аппаратная часть

1. Плата разработки UNO R3 (ch340) x1

2. Светодиод x5

3. Резистор 220 Ом x5

4. Макетная плата x1

5. Соединительные провода

Принцип работы

Принцип работы бегущего светодиодного огня заключается в управлении последовательностью включения и выключения светодиодов с помощью платы разработки Arduino, что создаёт визуальный эффект, похожий на текущую воду. Плата Arduino подключена к анодам светодиодов через цифровые выходные пины, а катоды светодиодов подключены к GND (земле) платы через резисторы. С помощью написания кода для Arduino мы можем управлять уровнями высокого и низкого сигнала на цифровых выходах для включения и выключения светодиодов.

IMG_256

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

  1. Подключите аноды 5 светодиодов к цифровым пинам D2, D3, D4, D5, D6 на плате Arduino соответственно.

  2. Подключите катоды каждого из пяти светодиодов к одному концу каждого из пяти резисторов 220 Ом.

  3. Подключите другой конец каждого из пяти резисторов 220 Ом к GND (земле) платы разработки.

Img

Пример кода

/*

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 означает низкий уровень, выключающий светодиод.

Результат проекта

После загрузки примерного кода на плату разработки,

P3

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