В гостях у Самоделкина! » Электроника » Миниатюрная игровая приставка с игрой Pong

Миниатюрная игровая приставка с игрой Pong

Приветствую, Самоделкины!
Сегодня у нас проект с микро игровой приставкой, который сможет повторить любой желающий.


Необходимые материалы и компоненты:
1) Микроконтроллер ATtiny85
2) Кнопки
3) OLED дисплей 128×32 точек
4) Программатор USBASP
5) Макетка
6) Проводочки
7) Батарейный отсек

Данная инструкция взята с YouTube канала «AlexGyver». Микроконтроллер для данного проекта нужен вот такой:


Это Attiny85 в DIP корпусе, нам его вполне хватит. Чтобы его не паять, возьмем так называемую панельку.

Также нам понадобится дисплей с Алиэкспресс, OLED с разрешением 128 на 32 точки.


Пины тоже пригодятся.

Кнопки будем использовать вот такие:

Можно конечно взять клавиатурные, но их придется доработать, а пилить и паять не очень хочется. Отсек под батарейку вот такого типа:

А собирать нашу игровую консоль мы будем макетной плате (при желании плату можно изготовить самостоятельно). Прошивать будем программатором USBasp, но сойдёт и любой AVR.

Схема подключения компонентов будет следующая:

Дисплей подключается к выводам шины I2C микроконтроллера. Кнопки подключаем к другим свободным пинам. Также добавим выключатель для включения/выключения системы. И в принципе это всё, осталось подключить питание.
Прошивка загружается в микроконтроллер программатором по следующей схеме:
Миниатюрная игровая приставка с игрой Pong

Теперь давайте приступим к сборке и расставим все элементы на макетной плате. Попробуем собрать и посмотрим, как это всё будет смотреться.


Довольно аскетично получилось. Неплохо. Лишнюю часть макетной платы можно отпилить.


Теперь закрепляем все компоненты просто запаяв им ноги.



Теперь необходимо соединить выводы по схеме. Для этой цели автор рекомендует использовать тонкий китайский монтажный провод.

А для удобства можете воспользоваться вот такой вот отзеркаленной схемой соединения.

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

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


Ну и это собственно всё, система собрана, осталось загрузить прошивку. Прошивать «камень» будем отдельно, подключив его к программатору на макетной плате.


Прошивка, как и ко всем проектам автора, находится в открытом доступе и скачать её можно со страницы проекта. Так же на странице проекта вы найдете схему и всю остальную необходимую информация по данному проекту.

Подробно останавливаться на загрузке не будем, если что-то не понятно, то подробную инструкцию вы всегда сможете посмотреть на сайте автора.
Для прошивки достаточно установить Arduino ide, установить ядро для работы с микроконтроллерами серии Attiny, выбрать плату, выбрать программатор.


Затем выбраем частоту 8 или 16 МГц, открываем вкладку «Инструменты», находим и выбираем «Записать Загрузчик».

Загрузчика там никакого нет, но микроконтроллер будет настроен на необходимую частоту. Затем выбираем вкладку «Скетч» - «загрузить через программатор». И ждем пока скетч загрузится в микроконтроллер.

Теперь вынимаем «камень» и вставляем в сердце нашей игровой мини консоли.


Как видите - работает! А теперь давайте более подробно разберем, что у нас в прошивке. АTtiny85 – это микроконтроллер с 512 байтами оперативной памяти, что очень немного. 99% библиотек для работы с вот таким дисплеем используют буфер на стороне микроконтроллера, чтобы корректно перерисовывать картинку, потому что у этого дисплея нельзя считать данные из его собственного буфера, а он там есть кстати.

Буфер для данного дисплея размером 128*32 точки займёт 512 байт, если мы хотим помнить состояние каждого бита, то есть пикселя.
Помимо буфера нам необходимо также хранить и другие данные, поэтому такой вариант заведомо не умещается в память такого объема.

Поэтому было решено понизить разрешение дисплея до 64*16 точек, буферизируя квадратики из 4х пикселей.

Автор работал с данным дисплеем напрямую и ему удалось успешно реализовать свою задумку. Скетч может пригодится кому-нибудь, кто захочет работать с этим дисплеем при помощи Attiny.


Теперь касаемо самой игры. Работает она довольно просто. По отдельному таймеру перемещается шарик, перемещение заключается в удалении точки с прежними координатами и добавление новой точки по новым координатам.

Расчёт координат - это просто прибавление величин скорости к величинам координат в системе дисплея.
При выходе мячика за горизонтальные стенки, он просто от них отскакивает, меняя вертикальную составляющую скорости на противоположную, то есть со знаком минус (-).

Помимо этого, программа производит проверки по вертикальным границам игрового поля, если шарик попал в ракетку (ну или как её назвать правильно), то он отскакивает, причём угол отскока случайный.
Если шарик пробивает стену за ракеткой, следовательно, игрок проиграл текущий раунд, и соперник получает очко.

Движение ракетки игрока реализовано точно так же, как движение шарика, то есть старая ракетка стирается и рисуется новая, уже с новыми координатами. Координаты меняются при нажатии на кнопку.
Таким образом получается гораздо быстрее, нежели очистка всего дисплея и отрисовка всех элементов заново.


Теперь, что касается ракетки соперника. Ей управляет ИИ (искусственный интеллект).

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

Также в игре реализована механика увеличения сложности. Каждые 10 очков в пользу игрока скорость шарика увеличивается. Вместе с этим растёт и скорость реакции ИИ (соперника).

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



В этой штуке самый кайф – это процесс сборки, а не применения. Разрабатывать игры, даже такие простенькие, может быть действительно довольно интересно. Особенно когда пытаешься запихнуть их в совсем миниатюрный микроконтроллер. А когда еще за углом тебя поджидает китайский дисплей…

На этом все. Благодарю за внимание. До новых встреч!

Видеоролик автора:

Источник
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Переделка шуруповерта на литий своими руками

Камертонный генератор

6.5
Идея
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
5.5
Описание
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
5.5
Исполнение
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
Итоговая оценка: 5.83 из 10 (голосов: 6 / История оценок)

Добавить комментарий

    • smilesmilesxaxaokdontknowyahoonea
      bossscratchfoolyesyes-yesaggressivesecret
      sorrydancedance2dance3pardonhelpdrinks
      stopfriendsgoodgoodgoodwhistleswoontongue
      smokeclappingcraydeclarederisivedon-t_mentiondownload
      heatirefullaugh1mdameetingmoskingnegative
      not_ipopcornpunishreadscarescaressearch
      tauntthank_youthisto_clueumnikacuteagree
      badbeeeblack_eyeblum3blushboastboredom
      censoredpleasantrysecret2threatenvictoryyusun_bespectacled
      shokrespektlolprevedwelcomekrutoyya_za
      ya_dobryihelperne_huliganne_othodifludbanclose
1 комментарий
  1. кетчуп
    вместо того что бы плагиатить лучше бы своё придумали

Привет, Гость!


Зарегистрируйтесь

Или войдите на сайт, если уже зарегистрированы...

Войти

Добавьте самоделку

Добавьте тему

Онлайн чат

Опрос
А Вы знаете, что на сайте оплачиваются отчеты о создании самоделок?

Последние комментарии

Все комментарии
Новые самоделки на почту

Введите электронную почту и получайте письма с новыми самоделками. Не более одного письма в день.