Arduino Pong — ретро‑игра Pong на Arduino с выводом на ТВ
TL;DR
Коротко: с помощью Arduino, пары потенциометров, одного RCA‑штекера и библиотеки TVout вы можете собрать простую версию Pong, выводимую на обычный телевизор по композитному (RCA) кабелю. Подключите 470 Ом к D7 и 1 кОм к D9, потенциометры к A0/A1, кнопку старта к D2, при желании звук — к D11. Библиотеку TVout поместите в /arduino/libraries и загрузите пример.
О чем эта статья
Исторический Pong и простая реализация на Arduino с композитным выводом видео. Пошаговые инструкции для сборки, проверки вывода на ТВ, подключение контроллеров, кнопки старта и советы по отладке и улучшению проекта.

Почему это полезно
- Учитесь работать с аналоговыми входами (потенциометры) и цифровыми выводами.
- Получаете практику пайки, разводки сигнала и простого электронного проектирования.
- Быстрая, недорогая демонстрация того, как Arduino может генерировать видеосигнал.
Важно: это учебный проект — не ожидайте консольного уровня графики или многопользовательского развлечения. Цель — освоить приёмы и получить удовольствие от ретро‑хобби.
Список компонентов
- 470 Ом резистор — 1 шт.
- 1 кОм резистор — 1 шт.
- 10 кОм потенциометр — 2 шт. (вращающиеся регуляторы)
- Arduino — 1 шт. (любая модель; UNO и аналогичные подходят)
- RCA‑штекер — 1 шт. (минимум для видео)
- Нажимная кнопка — 1 шт. (кнопка старта)
- 10 кОм резистор — 1 шт. (можно для подтяжки кнопки)
- Макетная плата, провода, паяльник, мультиметр
Примечание: два упомянутых 10 кОм резистора — один может использоваться как подтягивающий резистор для кнопки.
Подготовка программного обеспечения
- Скачайте библиотеку TVout (например TVoutBeta) — в исходной статье упоминается TVoutBeta1.zip. Поместите распакованные папки в каталог /arduino/libraries.
- Закройте и снова откройте Arduino IDE, если она была запущена — чтобы IDE обнаружила новую библиотеку.
- В Arduino IDE откройте примеры библиотеки TVout, чтобы начать с готовых демо‑скетчей (например, NTSC или PAL demo).
Важно: не придумывайте собственные номера выводов для видеосигнала — библиотека TVout ожидает конкретных пинов (см. ниже).
Подключение и тест TV Out
Шаги:
- Возьмите RCA‑штекер и удалите внешнюю оплётку до оголения экрана. Скрутите оплётку и отведите её в сторону — это будет общий провод (GND).
- Внутри — центральный сигнальный провод в пластиковой изоляции. Снимите небольшую часть изоляции, чтобы получить центральный провод для сигнала.
- Припаяйте два резистора к центральному проводу: 470 Ом и 1 кОм. Эти резисторы формируют суммарный аналоговый видеосигнал (сигнал + синхронизация).
- 470 Ом соединяется с цифровым выводом D7 (обозначается в библиотеке как D07).
- 1 кОм соединяется с цифровым выводом D9 (D09 в Arduino).
- Подключите внешний экран (оплётку) RCA к GND (земля) на Arduino — любой из контактов GND.
Важно: номера пинов D7 и D9 заданы библиотекой TVout и менять их нельзя без изменения самой библиотеки. Если вы используете Arduino с другим расположением портов, убедитесь, что библиотека поддерживает вашу плату.
Проверка вывода на телевизор
- Подключите RCA к входу AV/Composite телевизора.
- В Arduino IDE загрузите один из демо‑скетчей TVout (NTSC или PAL). Современные телевизоры часто автоматически распознают формат; если нет — переключитесь между NTSC и PAL демонстрациями.
- Включите телевизор на AV‑вход. Если всё в порядке, вы увидите тестовый экран (например, ретро 3D куб или разметку).
Если нет изображения, см. секцию «Тесты и отладка» ниже.
Подключение аналоговых контроллеров (потенциометров)
- Каждый потенциометр имеет три контакта. Центральный контакт — обычно выходной сигнал (Wiper). Подключите центральные контакты к аналоговым входам:
- левый контроллер → A0
- правый контроллер → A1
- Один из боковых контактов подключите к +5 В. Другой боковой контакт к GND. На большинстве потенциометров направление вращения меняет знак, но принцип прост.
- Для удобства расположите потенциометры на макетной плате, используйте экранированный кабель или старый сетевой кабель, если хотите делать контроллеры с длинным шнуром.
Проверьте работу, загрузив пример «Analog Input» из Arduino IDE: встроенный светодиод будет мигать быстрее/медленнее при повороте ручки. Это поможет убедиться, что потенциометр и A0 подключены правильно.
Подключение кнопки старта
- Подключите одну ножку кнопки к цифровому входу D2.
- Другую ножку кнопки подключите к GND.
- Используйте подтягивающий резистор 10 кОм к +5 В на входе D2 или активируйте внутренний pull‑up в коде (INPUT_PULLUP), тогда логика будет инвертирована (кнопка замыкает на землю).
Кнопка используется для запуска игры из меню. Протестируйте её в простом скетче до интеграции с игрой.
Код и исходники
Исходный код, упомянутый в оригинале, основан на реализации Lamonica, затем модифицирован для двух игроков автором duboisvb и обновлён для работы с текущей беты библиотеки TVout. В коде реализованы состояния игры (меню, игра, игра окончена), отрисовка мяча и ракеток, чтение значений потенциометров и кнопки каждую итерацию цикла.
Звуковой выход реализуется отдельным цифровым пином:
- Подключите сигнальный провод аудио к D11 — вы получите простые тональные эффекты (популярный подход для ретро‑звука на Arduino).
Важно: полные исходники можно найти у автора реализации (упоминается pastebin в оригинале) или в примерах, прилагаемых к библиотеке TVout. Перед внесением изменений сделайте резервную копию файла.
Тесты и отладка
Проверьте по шагам, если что‑то не работает:
- Нет изображения на ТВ:
- Убедитесь, что телевизор переключён на вход AV/Composite.
- Проверьте пайку в RCA: нет ли короткого между центральным проводом и оплёткой.
- Проверьте, что резисторы припаяны к центральному проводу и к пинам D7/D9.
- Попробуйте оба примера из библиотеки (NTSC и PAL).
- На старых/новых телевизорах может потребоваться композитный вход без переходников (HDMI‑конвертеры иногда не передают синхронизирующие сигналы корректно).
- Контроллеры не реагируют:
- Измерьте напряжение на центральных контактах потенциометров при повороте (0–5 В ожидается).
- Проверьте соединения A0/A1.
- Кнопка не срабатывает:
- Проверьте подтяжку к Vcc или использование INPUT_PULLUP в коде.
Полезный приём: подключите мультиметр в режиме вольтметра к выходу потенциометра и наблюдайте изменение напряжения при вращении — это быстро покажет, где ошибка.
Альтернативные подходы и улучшения
- Вместо RCA используйте композитный → HDMI конвертер, если ваш телевизор лишён композитного входа.
- Для более удобных контроллеров сделайте корпус с ручками и длинным кабелем; можно использовать старый джойстик от игровой приставки с конвертацией входов.
- Добавьте подсветку LED для очкового индикатора и простую таблицу рекордов в EEPROM Arduino.
- Для цветного вывода изучите расширения TVout или другие библиотеки, поддерживающие цвет (зависит от вашей платы и библиотеки).
Сценарии, где проект не подойдёт
- Для многопользовательских современных игр с сетевой поддержкой не подходит.
- Если вам нужна высокая разрешающая способность или плавная анимация — аппаратные ограничения Arduino и TVout это ограничивают.
Критерии приёмки
- На ТВ появляется меню или демонстрационный экран при загрузке скетча.
- Потенциометры корректно перемещают ракетки на экране.
- Кнопка запуска начинает игру из меню.
- При подключении аудио к D11 слышны простые тональные эффекты (если подключено).
Роль‑ориентированные чеклисты
- Сборщик:
- Провёл пайку RCA и резисторов.
- Подключил GND к оплётке RCA.
- Смонтировал потенциометры на макетной плате.
- Тестер:
- Запустил NTSC и PAL демо, убедился в выводе изображения.
- Проверил работу A0/A1 с мультиметром.
- Проверил логическую работу кнопки на D2.
- Пользователь:
- Удобно сидит на расстоянии действия проводов.
- Может регулировать чувствительность потенциометров при необходимости.
Мини‑методология для повторяемости
- Подготовьте библиотеку и проверьте примеры без изменения схемы.
- Соедините RCA с резисторами и проверьте изображение.
- Подключите потенциометры и проверьте аналоговые входы.
- Добавьте кнопку старта и протестируйте финальный скетч.
- Документируйте все изменения и сохраните резервную копию работающего скетча.
Совместимость и тонкие места
- Arduino UNO, Nano и совместимые платы обычно поддерживаются библиотекой TVout. Платы с другим микроконтроллером могут требовать правок библиотеки.
- Форматы NTSC/PAL: современные телевизоры часто автоматически переключаются, но для старых телевизоров выберите корректный демо‑скетч.
- Композитные адаптеры HDMI могут не передавать синхронизирующие компоненты правильно — в этом случае используйте телевизор с нативным композитным входом.
Идеи для следующей версии
- Добавить счётчик и экран рекордов, сохранение в EEPROM.
- Сделать беспроводные контроллеры с использованием радиомодулей (например nRF24).
- Реализовать адаптацию под более сложную графику или цвет с более мощной платой.
Краткое резюме
Arduino Pong — доступный проект для знакомства с выводом композитного видео, аналоговыми контроллерами и простыми игровыми циклами. Он учит пайке, работе с библиотеками и отладке электроники. Соответствие критериям приёмки и простой набор компонентов позволяют быстро собрать рабочую версию и затем расширять её согласно вашим идеям.
Важно: проект — учебный и экспериментальный. Если потребуется перенос на более современную платформу или цветной вывод, оцените альтернативные библиотеки и платы с большей производительностью.
Спасибо за чтение! Напишите, если соберёте свою версию — расскажите об улучшениях или трудностях в комментариях.
Похожие материалы
Power On: История Xbox — где смотреть
Родительский контроль на Xbox через Family Settings
Как подключить контроллер Xbox 360 к консоли
Как удалить профиль на Xbox (Series X|S, One, 360)
Юбилей Xbox: как смотреть трансляцию и чего ждать