DIY Бинго-машина на Arduino: два A4 7-сегментных дисплея на WS2811/WS2812B
Компоненты и материалы
| Компонент | Количество | Примечание |
|---|---|---|
| Arduino UNO | 1 | |
| Перфорированные платы (Peg Board) для корпусов дисплеев | 3 | 2 для 7-сегментников, 1 для табло |
| Пластиковая разделочная доска (серая) — корпус табло | 1 | |
| LED-лента WS2811 5м (5050, 3 LED на чип) | 1 | Для сегментов 7-сегментников (12V) |
| LED-лента WS2812B 5м (300 LED, 60 LED/м, 5V) | 1 | Для табло (75 номеров + 24 LED "BINGO") |
| Аудиокабель (3 провода: 12V, GND, Data) | 1 | Соединение табло и 7-сегментников |
| Прозрачная пластиковая доска (фронтали 7-сегментников) | 2 | |
| Гибкая серая пластиковая доска (крышка табло) | 1 | |
| Резистор 220 Ом (на линию данных) | 2 | |
| Конденсатор 100 мкФ (на питание лент) | 2 | |
| Кнопка большая (моментарная) — "Новый номер" | 1 | Пин D2 |
| Кнопка малая (моментарная) — "BINGO" | 1 | Пин D4 |
| Стабилизатор LM7805 (5V, на радиаторе) | 1 | Питание WS2812B табло от 12V |
Инструменты
Обычные инструменты для DIY: паяльник, дрель, ножницы для металла/пластика, мультиметр, термоусадка, клеевой пистолет.
О проекте
Автор (Pierre Pennings, ноябрь 2018) купил дешёвую RGB-ленту WS2811 с пультом и решил сделать крупные 7-сегментные дисплеи формата A4. Каждый сегмент = 3 LED (один чип WS2811). 7 сегментов + точка = 8 адресуемых блоков на цифру. Две цифры = 16 блоков. Управление — одним пином Arduino (D6). Питание ленты WS2811 — 12V (в комплекте был БП).
Дополнительно сделано табло (Scoreboard) на WS2812B (5V) для 75 номеров бинго + слово "BINGO" (подсветка). Табло показывает уже выпавшие номера. Управление тем же пином D6 (параллельно через резисторы 220 Ом).
Этапы изготовления
1. Изготовление 7-сегментных дисплеев
- Корпус: перфорированная плата (Peg Board) из магазина ACTION.
- Сегменты: куски ленты WS2811 (по 3 LED), распаянные и соединённые проводами (+12V, GND, DO/DI).
- Фронтальная панель: белая полупрозрачная пластиковая доска (IKEA). Вырезаны сегменты по шаблону (чёрный грунт + вырезание).
- Соединение с табло: аудиокабель (3 жилы) с джеками для разъёмного подключения.
2. Изготовление табло (Scoreboard)
- Корпус: та же перфоплата. Крышка: серая пластиковая доска с просверленными отверстиями под LED.
- Внутри: 5 секций по 15 WS2812B (75 номеров) + 3 секции по 8 LED для букв B-I-N-G-O.
- Между слоями — фото-печатка с номерами и защитная фольга.
3. Программное обеспечение
Разработка на макетной плате. Использована библиотека Adafruit_NeoPixel. Таблица сегментов для цифр 0-9 (8 сегментов включая DP).
Алгоритм:
- Нажатие "New Number" (D2) -> генерация случайного числа 1-75.
- Короткое световое шоу (LightShow1).
- Число выводится на два 7-сегментника.
- Число записывается в массив
SCORE[76](1 = выпало). Если уже выпадало — генерация повторяется. - На табло соответствующий номер зажигается зелёным, новое — красным. Слово BINGO — синим/красным.
- Нажатие "BINGO" (D4, удержание 3 сек) -> BingoLightShow, сброс массива, новый раунд.
- Выключение питания также сбрасывает раунд.
4. Электроника
- БП 12V 2A -> разъём питания Arduino (с выключателем).
- LM7805 (с радиатором) -> 5V для 99 LED WS2812B табло (ток ~2А, LM7805 на пределе — лучше использовать импульсный стабилизатор или мощный LDO).
- Оба типа лент (WS2811 12V и WS2812B 5V) управляются с пина D6 через резисторы 220 Ом.
- Кнопки с подтяжкой к VCC (INPUT_PULLUP), замыкание на GND.
Схема в Fritzing: bingo_sketch_66WRdQITE2.fzz.
Код (BINGO_Machine_rev04.ino)
Полный скетч с комментариями (GPL3+). Основные функции:
GENERATENEWNUMBER(range)— случайное число 1-75.DISPLAYNUMBER(tens, units)— зажигает сегменты на двух дисплеях (красный).DISPLAYSCORE()— обновляет табло (зелёные выпавшие, красное текущее, синее BINGO).LIGHTSHOW1()— радужная анимация при генерации.BINGOLIGHTSHOW()— каскад белых LED на табло, мигание дисплеями.CLEARDISPLAY()— гасит 7-сегментники.
Массив SEGMENTarray[8][10] задаёт активные сегменты для каждой цифры. Массив color_scheme[] — палитра для LightShow1.
Файлы проекта
- Код:
BINGO_Machine_rev04.ino - Шаблон фронтов (SVG):
tekening_gaten_patroon_puntjes_xgW76A8Jmw.svg - Схема Fritzing:
bingo_sketch_66WRdQITE2.fzz
Советы по повторению
- Ток WS2812B табло велик — обязательно используйте импульсный преобразователь 12V->5V (3А+) вместо LM7805.
- Для надёжности добавьте конденсаторы 1000 мкФ на входе и выходе 5V.
- Уровень данных 5V (WS2812B) совместим с Arduino. Для WS2811 (12V) логика тоже 5V-толерантна.
- Структура кода модульная — легко добавить новые эффекты или режимы игры.
Производственный процесс
- Сборка домашней машины для написания домашних заданий (плоттер-писатель)
- Ретро-часы на индикаторах Numitron с Arduino: просто, надёжно, экономно
- Сборка вольтметра на Arduino с дисплеем Nokia 5110 — Пошаговое руководство
- Сборка точного измерительного колеса на Arduino Nano и вращательном энкодере
- Точный монитор качества воздуха на датчике Sharp GP2Y1010AU0F
- 1D Pong на Arduino и ленте WS2812: пошаговое руководство
- Построение полнофункционального станка с ЧПУ на базе Arduino Nano R3
- HID-UPS на Arduino: превращаем «глупый» ИБП в умный USB-устройство
- Создание портативного RFID-замка на Arduino — пошаговое руководство
- Умная кофемашина на Arduino с Bluetooth-управлением и мониторингом температуры