1D Pong на Arduino и ленте WS2812: пошаговое руководство
Компоненты и материалы
- Arduino Nano R3 — 1 шт.
- Адресуемая LED-лента WS2812 (NeoPixel), 60 светодиодов — 1 шт. (Digilent или аналог)
- Пьезо-зуммер (buzzer) — 1 шт.
- Тактильные кнопки (4 пина, верхнее нажатие) — 4 шт.
- Транзистор NPN (универсальный, напр. 2N2222 или BC547) — 1 шт.
- Резистор 2.2 кОм — 1 шт. (для базы транзистора)
- Резистор ~300–470 Ом — 1 шт. (для линии данных ленты, не в списке, но рекомендуется)
- Конденсатор 470–1000 мкФ 6.3В+ — 1 шт. (параллельно питанию ленты, не в списке, но критично)
Необходимое ПО
- Arduino IDE
О проекте
Это одномерная версия классической игры «Pong», реализованная на адресуемой LED-ленте WS2812. Игра для двух игроков: «мяч» бегает вдоль ленты, и игрок должен нажать свою кнопку, когда светодиоды в его зоне загораются, чтобы отбить мяч.
Игровая механика
- Ускорение: после каждого удара скорость мяча увеличивается, усложняя игру.
- Зона отбивания (синяя): мяч можно отбить, пока он в зоне. Чем позже нажать — тем быстрее обратный полет, но выше риск промахнуться.
- Буст (ускорение): зажатие второй кнопки («boost») при отбивании дает максимальную скорость, но сужает зону отбивания.
- Победа: настраивается количество очков для победы (по умолчанию — 5 или 10).
Особенности конструкции
- Все компоненты размещены в коробке из ПВХ-пластита, оклеенной самосклеящейся цветной обоймой — устройство выглядит аккуратно и готово к игре.
- Программная часть портирована с ресурса vagrearg.org. В коде легко меняются: число светодиодов, размер зоны отбивания, яркость, очки для победы и др.
Схема подключения
Схема доступна в разделе «Schematics». Основные моменты:
- Лента WS2812: DIN → D6 (или другой пин, заданный в коде), +5V и GND к питанию. Обязательно конденсатор 470+ мкФ на питании ленты и резистор 330–470 Ом на линии данных.
- 4 кнопки: по одной на игрок (отбивание) + по одной на буст. Подключены к цифровым пинам с pull-up (внутренними или внешними).
- Зуммер: через транзистор NPN (коллектор → зуммер → +5V, эмиттер → GND, база через 2.2кОм к пину Arduino) для громкого звука.
- Питание: Arduino от USB или 5V блока; лента — от того же 5V источника (тока до 3.6А при полной яркости, но в игре яркость низкая).
Программирование
- Скачайте код (в разделе Code — «No preview (download only)», забирайте из репозитория автора или прикрепленных файлов).
- Установите библиотеку Adafruit NeoPixel или FastLED (зависит от используемого кода).
- При необходимости скорректируйте в коде:
NUM_LEDS— количество светодиодов (60).- Пины кнопок, зуммера, ленты.
- Параметры игры: скорость, зона, буст, очки победы.
- Загрузите в Arduino Nano.
Советы по сборке
- Используйте макетную плату или пайку на перфорации для надежности.
- Корпус из ПВХ легко режется ножовкой/ножом, отверстия для кнопок и ленты — сверлом/фрезой.
- Ленту фиксируйте термоклеем или двусторонним скотчем внутри коробка, чтобы свет выходил через матовую пленку/прозрачную крышку.
- Проверьте работу каждой кнопки и ленты отдельно перед финальной сборкой.
Производственный процесс
- Сделай свой LUMAZOID: DIY Arduino музыкальный визуализатор
- Ретро-часы на индикаторах Numitron с Arduino: просто, надёжно, экономно
- Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
- Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
- Создание рулетки на 37 светодиодов с Arduino Nano
- DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер
- Сборка консоли Pong 24×16 на Arduino Nano и MAX7219
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
- Pixel Chaser: игра на один тап с NeoPixel Ring и Arduino Nano
- Сборка точного измерительного колеса на Arduino Nano и вращательном энкодере