ПИНГ-ПОНГ НА АРДУИНО



Пинг-Понг – одна из первых аркадных видеоигр. Это спортивная игра в теннис с простой двумерной графикой. Ping-Pong был одной из первых игр, которая достигла невероятной популярности. Цель там состоит в том, чтобы победить противника в симуляторе настольного тенниса, заработав больше очков. Игра была первоначально произведена Atari в 1972 году.

Схема игры Пинг-Понг на Ардуино

Аппаратная часть самодельной игры очень проста. Весь проект состоит из следующих компонентов:

  • Arduino Uno
  • Макетная плата
  • Экран Adafruit 128×64 OLED (в режиме I2C)
  • 2х 10 К потенциометра
  • Пьезо-зуммер

Подключение этих компонентов займёт всего несколько минут. В итоге получается следующая настройка соединений:



ПИНГ-ПОНГ НА АРДУИНО

С проводкой разобрались. Пришло время для кодирования. Код прошивки есть тут. Чтобы использовать экран, убедитесь, что установлены библиотеки Adafruit_GFX и  Adafruit_SSD1306.

ПИНГ-ПОНГ НА АРДУИНО

Вот как выглядит готовая игровая приставка в разных вариантах игры:



ПИНГ-ПОНГ НА АРДУИНО

Тут было небольшое изменение – использован изначально экран OLED 0,96". Но этот дисплей очень маленький. Поэтому выбран OLED 1,3", по-идее совместимый, но не совсем. Меньший из них построен на SSD1306, а больший – на SSH1106. В результате следует использовать другую библиотеку – U8g2lib.h – и программа немного подредактирована.

ПИНГ-ПОНГ НА АРДУИНО

Потенциометры 22k, которые были в наличии, оказались нелинейными, что очень мешало в игре – пришлось покупать линейные. Это следует учитывать при сборке устройства.

ПИНГ-ПОНГ НА АРДУИНО

Также добавлены 5 фиксированных переключателей и один без фиксации.

  1. Первый переключатель – это питание (батарея 6F22 на 9 В). Конечно добавлен стабилизатор 7805.
  2. Второй переключатель – отключить динамик. Громкоговоритель слишком громкий, поэтому иногда полезно приглушить его.
  3. Еще три кнопки подключены к контактам 10, 11 и 12. Они отвечают за уменьшение ширины ракетки, переходя на игры типа теннис – футбол, а третий запускает сквош для одного человека. Сквош – суть состоит в перемещении правой части к краю, увеличения его размера до 64 точек и устранения средней линии.
ЧИТАТЬ
АУДИО ПЛЕЕР СВОИМИ РУКАМИ

Цель состояла в том, чтобы иметь возможность менять тип игры в любое время, а не только во время старта, поэтому переключатели проверяются в основном цикле. Этот цикл проверяет переключатели, вычисляет положение мяча и ракетки, затем стирает экран и рисует его снова.

  • Последняя нестабильная кнопка замыкает линию RST на землю. То есть сброс системы.

Дисплей SSH1106 требует шрифтов, которые занимают много места в памяти. Чтобы сэкономить память, установлены усеченные шрифты (только цифры) для отображения результатов.

ПИНГ-ПОНГ НА АРДУИНО

Потребляемый ток составляет 30 мА. Обычная батарейка будет питать самодельную игровую приставку около 20 часов.

ПИНГ-ПОНГ НА АРДУИНО

Дисплей Adafruit OLED  может быть использован с SPI или I2C интерфейсом. Обычно SPI немного быстрее, в то время как I2C использует меньше проводов. Он может использоваться как на 3,3 В, так и на 5 В, прекрасно совмещаясь с Arduino.



Прокрутить вверх