Пересоздание классической аркады «PONG» на Arduino

Пересоздание классической аркады «PONG» на Arduino Arduino, Atari, Олдскул, Pong, Tv Out, Перевод, Ретро, Ретро-игры, Длиннопост

Pong была первой в истории видео игрой, которая достигла массового рынка. Впервые в истории, концепция «видео игра» была доставлена в дома семей, благодаря Atari 2600 — так что это правильно, что мы платим небольшую дань уважения этой исторической жемчужине. Теперь, вы можете заново пережить это (надо признать несколько скучный геймплей), используя Arduino и некоторые общие компоненты.


Я не буду врать — вряд ли ваша дочь будет отказываться от ее Nintendo DS, и этот проект не собирается обеспечить часы удовольствия для всей семьи — но это удивительный и легкий проект, чтобы улучшить ваше Arduino программирование. И если вы только начинаете, не забудьте ознакомиться с Arduino руководством начинающего пользователя.


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


Требования для Arduino Pong

470 Ом резистор x1
1k Ом резистор x1
10k Ом Потенциометр (переменный резистор) x2
Arduino x1 (любая версия)
RCA штекер x1 (если у вас есть больше чем один, вы можете подключить звук тоже. Один для видео это абсолютный минимум)
Кнопочный переключатель x1
10k Ом резистор x1
Пересоздание классической аркады «PONG» на Arduino Arduino, Atari, Олдскул, Pong, Tv Out, Перевод, Ретро, Ретро-игры, Длиннопост

Также скачайте TV Out библиотеку Arduino отсюда — выберите TVoutBeta1.zip, последнего релиза. Поместите все полученные папки в ваш /arduino/libraries каталог, и перезапустить Arduino IDE, если он уже открыт.


Тестирование TV Out

Возьмите RCA штекер и зачистите внешний слой изоляции. Соберите экранирующую обмотку, скрутите и отведите в одну сторону. Это ваша земля. В центре должен быть еще один кабель с пластиковой защитой — опять же, зачистите изоляцию — так у вас теперь есть сигнальная линия.

Пересоздание классической аркады «PONG» на Arduino Arduino, Atari, Олдскул, Pong, Tv Out, Перевод, Ретро, Ретро-игры, Длиннопост

Припаяйте оба 470 Ом и 1 кОм резисторы к сигнальной линии центральной части RCA штекера — это обеспечит сигнал синхронизации и собственно видеосигнал, скомбинированы для получения входного аналогового видеосигнала. 470 Ом резистор должен быть припаян в цифровой IO контакт D07, в то время как 1k Ом резистор идет на контакт D09.


Эти контакты задаются библиотекой которую мы импортируем, так что вы не можете изменить их.

Пересоздание классической аркады «PONG» на Arduino Arduino, Atari, Олдскул, Pong, Tv Out, Перевод, Ретро, Ретро-игры, Длиннопост
Теперь вы можете двигаться вперед и загрузить пример (Хотя в библиотеке и предусмотрена два варианта PAL и NTSC, это не должно быть проблемой выбора, так как на современных телевизорах они оба будут нормально работать) — Демо NTSC работал отлично у меня, несмотря на то что я в Великобритании. Подключите к телевизору, вы должны получить прекрасный ретро 3D куб (на самом деле он псевдо 3D). Оооо да — вы взволнованы еще? Я да.
Пересоздание классической аркады «PONG» на Arduino Arduino, Atari, Олдскул, Pong, Tv Out, Перевод, Ретро, Ретро-игры, Длиннопост

Тест ввода аналогового потенциометра

Хорошо что у нас работает TV output, теперь давайте работать над контроллером. Каждый из них должен иметь 3 контакты. Центральный почти всегда производит выходной сигнал. Подключите оба средних контакта к пинам на ардуино A0 и A1. Один из боковых контактов каждого потенциометра (не важно какой) объединив подключите к пину +5V как на фото. Оставшиеся контакты подключите к пину GND.


Я поместил свои потенциометры на девборд. Так как у меня короткие провода. Вы же можете использовать в законченном проекте более длинные провода, чтобы иметь возможность играть сидя на диване.

Пересоздание классической аркады «PONG» на Arduino Arduino, Atari, Олдскул, Pong, Tv Out, Перевод, Ретро, Ретро-игры, Длиннопост

Затем загрузите базовый примерный скетч из Arduino IDE в вашу Arduino. Этот демо скетч будет мигать светодиодом на борту платы быстрее или медленнее, в зависимости от входа на A0. Он проверит только вход A0, так что предположим что он тоже нормально работает.


Добавим кнопку «СТАРТ»

И, наконец, мы добавим стартовый переключатель на D02. Обратитесь к электрической схеме здесь, чтобы знать как сделать это. Этот переключатель будет использоваться, чтобы начать игру, когда вы в меню.

Пересоздание классической аркады «PONG» на Arduino Arduino, Atari, Олдскул, Pong, Tv Out, Перевод, Ретро, Ретро-игры, Длиннопост

Код для «PONG» здесь

Мы используем некий код, первоначально написанный Lamonica, модифицированный duboisvb для двух игроков, и обновленный самостоятельно чтобы использовать последнюю бета версию библиотеки TV Out.


Это весьма длинный, но простой код, который не должен требовать объяснений от меня. Как и большинство игр, он опирается на игровое состояние (меню, в игре, игра окончена), и считывает входные значения обоих контроллеров и переключателя каждой итерации цикла. Помимо этого есть методы, чтобы нарисовать на экране, мяч, весла, и логику игры.


Обратите внимание, что код включает в себя аудио выход тоже (у меня не было ещё одного RCA чтобы проверить) но если у вас есть лишний, то подключите его сигнальную линию к к пину D11 на вашей Arduino, и вы услышите приятные ретро тоны игры.

Пересоздание классической аркады «PONG» на Arduino Arduino, Atari, Олдскул, Pong, Tv Out, Перевод, Ретро, Ретро-игры, Длиннопост
Даже если вы не любите ретро игры, этот пример может послужить примером в создании различный устройств на базе Arduino использующих ТВ или монитор. Так же стоит отметить что с помощью библиотеки TV Out вы можете выводить изображение и в цвете.


Автор статьи: James Bruce

Перевёл: Dionisnation

TECHNO BROTHER

1.6K постов12.5K подписчиков

Добавить пост

Правила сообщества

1-Мы А-политическое сообщество. 2-Запрещено оскорбление: Администрации Пикабу, сообщества, участников сообщества а также родных, близких выше указанных.

3-Категорически запрещается разжигание межнациональной розни или действий, направленных на возбуждение национальной, расовой вражды, унижение национального достоинства, а также высказывания о превосходстве либо неполноценности пользователей по признаку их отношения к национальной принадлежности или политических взглядов. Мат - Нежелателен. Учитесь выражать мысли без матерщины