Оглавление:

ESP8266 VGA Pong: 5 шагов (с изображениями)
ESP8266 VGA Pong: 5 шагов (с изображениями)

Видео: ESP8266 VGA Pong: 5 шагов (с изображениями)

Видео: ESP8266 VGA Pong: 5 шагов (с изображениями)
Видео: Консоль 8-bit на ESP32 своими руками. Проекты Амперки 2024, Июль
Anonim
Image
Image
Список материалов
Список материалов

В этой инструкции я покажу, как создать копию классической игры Pong для монитора VGA, используя ESP8266 и несколько других компонентов.

Эта игра стала возможной благодаря библиотеке EspVGAx, недавно опубликованной на GitHub Сандро Маффиодо (он же Smaffer), и, насколько мне известно, это первая игра, в которой она используется.

Библиотека реализует разрешение 512 x 480 пикселей, хранящееся в буфере кадра внутри ОЗУ, что требует 30720 байт. Разрешение огромно по сравнению с Arduino TVout или VGAx (128 x 96 и 120 x 60 пикселей соответственно). Я надеюсь, что эта игра вдохновит других программистов на разработку или воспроизведение более сложных игр.

Шаг 1: Список материалов

Для библиотеки EspVGAx требуется ESP8266 со всеми открытыми GPIO, например ESP-12E, плата NodeMCU-12E или любая плата, открывающая GPIO5 (D1), GPIO4 (D2) и GPIO13 (D7).

В частности, я использовал:

  • ESP8266 NodeMCU-12E (ссылка здесь)
  • разъем DSUB15 (например, гнездовой разъем VGA)
  • резистор 330 Ом
  • другой резистор (примерно от 1 до 3 кОм)
  • два потенциометра 10 кОм
  • кнопка (нет)
  • два диода (например, 1N4007s)
  • макет
  • провода

Я получил разъем DSUB15 от старой печатной платы VGA. В качестве альтернативы вы также можете отрезать старый кабель VGA и подключить провода непосредственно к макетной плате.

Шаг 2. Загрузка библиотеки и эскиза

Загрузка библиотеки и эскиза
Загрузка библиотеки и эскиза

Существуют разные методы программирования и ESP8266; Я использовал IDE Arduino, чтобы написать Pong и загрузить код.

Обратите внимание, что библиотека EspVGAx работает с Arduino IDE 1.8.1. Если у вас есть другие версии, лучше всего загрузить файлы.zip и распаковать их в специальной папке. Версия для Windows находится здесь. Версии для других ОС здесь.

После этого вы должны загрузить библиотеку EspVGAx со страницы GithHub здесь (прямая ссылка на zip-версию здесь) и распаковать ее в папке библиотеки в программном обеспечении Arduino.

NB. В файле espvgax_draw.h есть небольшая ошибка. Чтобы исправить это, просто замените строку 17:

while (x0% 32) {with while (x0% 32 && sw> 32) {

Наконец, в конце этого шага вы можете загрузить ESP8266_Pong.rar.

После распаковки, чтобы загрузить его на свой ESP8266, вам необходимо настроить Arduino IDE.

Если вы никогда этого не делали, вы можете найти все необходимые инструкции в этих инструкциях, в частности, в шаге 2.

После того, как все настроено, настройки ESP8266 должны выглядеть так, как показано на картинке выше.

Если вы можете загрузить код без ошибок, вы можете приступить к сборке деталей.

Шаг 3: Подключение частей: разъем VGA

Подключение частей: разъем VGA
Подключение частей: разъем VGA
Подключение частей: разъем VGA
Подключение частей: разъем VGA
Подключение частей: разъем VGA
Подключение частей: разъем VGA

Я рекомендую сначала подключить порт VGA, как показано на рисунках выше. Обратите внимание, что, соединив три контакта: красный, зеленый и синий (т.е. контакты 1, 2 и 3 на разъеме DSUB15), вы получите черно-белое изображение на экране. Также возможно разное сочетание цветов. Подробности смотрите на странице библиотеки GitHub.

Кроме того, вы должны подключить резистор 330 Ом между контактами RGB и D7 (GPIO13) на ESP8266. Это дало мне немного сероватое изображение на моем мониторе, поэтому после нескольких попыток я решил вообще устранить его.

На этом этапе, если все работает правильно, вы уже можете подключить монитор и увидеть начальный экран игры с надписью «ESP8266 VGAx Pong».

Шаг 4: Соединение частей: потенциометры и кнопка

Соединение частей: потенциометры и кнопка
Соединение частей: потенциометры и кнопка

Кнопка должна быть подключена между 3,3 В и контактом D0 (GPIO16). Также подключите резистор 1–3 кОм от D0 к земле. Это позволяет избежать неопределенного состояния D0, когда кнопка открыта.

Подключение двух потенциометров менее тривиально, на самом деле ESP8266 имеет только аналоговый входной порт A0 (ADC0)! Хитрость заключается в том, чтобы подключить оба выхода pot.s к одному и тому же порту и «мультиплексировать» их. Мультиплексирование просто означает, что вы включаете потенциометр, считываете его, затем выключаете и переходите ко второму.

Если вы хотите узнать больше об этом методе, вы можете прочитать это руководство.

Подключите один крайний потенциометр к GND, другой крайний к D5 для потенциометра левого игрока и D6 для правого игрока.

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

Шаг 5: Заключение и благодарности

Я благодарен Сандро Маффиодо - SMAFFER - за библиотеку ESPVGAX. Без него эта игра была бы невозможна.

Я надеюсь, что эта инструкция послужит вдохновением для других программистов, чтобы они смогли воспроизвести более сложные классические аркадные игры с помощью ESP8266, который имеет гораздо меньше ограничений, чем Arduino.

Наконец, я написал эту инструкцию, чтобы отправить ее на конкурс игрушек: если вам нравится или воспроизведите ее, пожалуйста, проголосуйте за нее!

Рекомендуемые: