Создание динамической бегущей строки на Arduino Nano и NeoPixel
Компоненты и материалы
- Arduino Nano R3 — 1 шт.
- Лента NeoPixel (адресуемые RGB-светодиоды) — 1 шт.
- Провода для подключения (3 шт.)
- Термоусадочная трубка (опционально)
- Картон, скотч, клей
Необходимые инструменты
- Паяльник и припой
- Кусачки/обкусачи
- Компьютер с Arduino IDE
О проекте
Это простой учебный проект по добавлению анимированной подсветки в аркадный автомат или другие устройства. Подсветка может использоваться для марки, задней подсветки и многих других целей.
Сборка
Схема подключения очень проста: три провода от Arduino Nano к ленте NeoPixel — 5V, земля и сигнальный провод (в примере используется пин 2). Рекомендуется использовать термоусадку для защиты паяных контактов на ленте от отрыва.
Программирование
В скетче нужно задать количество светодиодов в ленте (переменная numOfLeds), загрузить код в Arduino и протестировать. В примере реализованы три анимации: «бегущий» светодиод, мигание и пульсация яркости — все в белом цвете. Код легко модифицируется для любых цветов и эффектов.
Механическая часть
Автор использовал два куска картона, вставляемых в корпус автомата. На один клеится лента NeoPixel, второй служит экраном, предотвращающим прямое свечение вниз. Картон заклеивается гофротрубкой (для затемнения), провода и плата фиксируются сзади. Всё устанавливается в корпус, питание подается по USB (в примере — от Raspberry Pi).
Для лучшего результата марку (прозрачную панель с рисунком) рекомендуется печатать на фото-бумаге или, идеально, заказывать печать на пленке в типографии.
Библиотеки
- Adafruit NeoPixel library
Код
/* **********************************************************************
* Marquee lighting with Neopixels by ericBcreator
* simple script for lighting an (arcade) marquee
**********************************************************************
* last update 20181021 by ericBcreator
*
* Inspired by an article by sandyjmacdonald
* https://sandyjmacdonald.github.io/2015/12/02/picade-errata/
*
* components:
* - Neopixel strip
* - Arduino Nano
*
* This code is free for personal use, not for commercial purposes.
* Please leave this header intact.
*
* contact: ericBcreator@gmail.com
********************************************************************** */
#include <Adafruit_NeoPixel.h>
#define PIN 2
int numOfLeds = 11;
int minBrightness = 80;
int maxBrightness = 255;
int walkingLedsDelay = 250;
int flashDelay = 250;
int numOfFlashLoops = 3;
int numOfPulseLoops = 10;
int pulseDelay = 20;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(numOfLeds, PIN);
void setup() {
strip.begin();
}
void loop() {
walkingLeds();
flashLeds();
for (int i = 0; i < numOfPulseLoops; i++)
pulseBrightness();
}
void walkingLeds() {
setLedColorsToZero();
strip.setBrightness(maxBrightness);
strip.show();
for (int x = numOfLeds; x > 0; x--) {
strip.setPixelColor(x, strip.Color(255, 255, 255));
strip.show();
delay(walkingLedsDelay);
strip.setPixelColor(x, 0);
strip.show();
}
}
void flashLeds() {
setLedColors();
for (int i = 0; i < numOfFlashLoops; i++) {
strip.setBrightness(maxBrightness);
strip.show();
delay(flashDelay);
strip.setBrightness(minBrightness);
strip.show();
delay(flashDelay);
}
}
void pulseBrightness() {
setLedColors();
for (int i = minBrightness; i < maxBrightness; i++) {
strip.setBrightness(i);
strip.show();
delay(pulseDelay);
}
for (int i = maxBrightness; i > minBrightness; i--) {
strip.setBrightness(i);
strip.show();
delay(pulseDelay);
}
}
void setLedColors() {
for (int x = 0; x < numOfLeds; x++)
strip.setPixelColor(x, strip.Color(255, 255, 255));
}
void setLedColorsToZero() {
for (int x = 0; x < numOfLeds; x++)
strip.setPixelColor(x, strip.Color(0, 0, 0));
}
Схема
Производственный процесс
- Построение доступной беспроводной сети датчиков для дома
- Создание интернет-управляемого видеostreaming-робота на Arduino и Raspberry Pi
- Оптимизация электрических схем в E3.schematic: умные функции
- Управление потолочным вентилятором через Alexa: пошаговое руководство
- Мониторинг температуры дома из любой точки через Arduino IoT Cloud
- Управление телевизором через Alexa и Arduino IoT Cloud — пошаговое руководство
- Интеграция центрального отопления с Arduino: умное управление по OpenTherm
- ThimbleKrox: управление мышью с пальца на Arduino Micro и MPU-6050
- Arduino MKR1000: полное руководство по распиновке, питанию и старту для IoT
- Раскройте передовые возможности автоматизации: почему 3D зрение необходимо для ваших проектов