Проектирование игры для 8-разрядного микроконтроллера

Проектирование игры для 8-разрядного микроконтроллера Game designed for the 8-bit microcontroller

УДК 51-8 DOI 10.24411/2658-3569-2020-10017 Захаров Максим Владимирович,

кандидат технических наук, доцент, заведующий кафедрой автоматики, робототехники и управления техническими системами, Северный арктический федеральный университет им. М.В. Ломоносова, г.Архангельск Серебренников Иван Владимирович,

Северный арктический федеральный университет им. М.В. Ломоносова, г.Архангельск

Zakharov M.V., m.zakharov@narfu.ru Serebrennikov I.V., w 7a8n1y4a@gmail. com

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

Summary. The article discusses the four main stages of creating a simple game. Made the selection of hardware components of the project on creation of the game. The concept of the game is developed. The requirements are given for the main program classes of the future game. Ключевые слова: микроконтроллеры, игры, программирование, вычисления. Keywords: microcontrollers, games, programming, computing.

Игра для 8-разрядного микроконтроллера мало чем отличается от любой другой программы, имеющей простейший интерфейс. Проектирование можно разделить на четыре этапа:

- Конфигурирование аппаратных средств;

- Требования к классам, отвечающих за ввод и вывод информации;

- Описание концепции игры;

- Вывод графики.

Конфигурирование аппаратных средств

На сегодняшний день существуют три очень крупных и доступных семейства микроконтроллеров: ARM, AVR, Xtensa. Каждое из этих семейств имеет архитектуру, подразумевающую разделение устройств вывода, ввода, хранения информации и арифметических операций на отдельные устройства, совмещенные при помощи устройства управления.

Под микроконтроллером обычно понимают устройство, совмещающее в себе вычислительный модуль и память для программы. Для упрощения нашей задачи легче использовать платы с уже встроенными микроконтроллером и периферией. Каждое из трёх семейств названных выше микроконтроллеров имеет такие модули, но только в семействе Xtensa присутствуют модули с возможностью лёгкой интеграции в wi-fi инфраструктуру и малыми габаритными размерами. Была выбрана плата «Wemos D1 R1 mini» (рисунок 1).

Рисунок 1 - Wemos D1 R1 mini

Устройств ввода информации может быть много: от самых простых кнопок до сложных систем захвата движения камерами. Нужный способ ввода для микроконтроллера определяется потребностями проекта. В нашем случае отлично подойдёт простейший энкодер, со встроенной кнопкой (рисунок 2).

Рисунок 2 - Энкодер

Устройства вывода информации так же разнообразны, как и устройства ввода. Это могут быть экраны, светодиодные панели или даже сервоприводы. Среди устройств вывода большое распространение получили OLED экраны с разрешением 128 на 64 пикселя. Контроллер матрицы такого экрана может быть с различной маркировкой от sh1106 до sd1306. Стоит помнить, что для каждого экрана есть свой набор команд управления и конфигурирования. Так же не стоит забывать об интерфейсе передачи данных такого экрана SPI или I2C. В проекте задействован экран с интерфейсом I2C и контроллером sh1106 (рисунок 3).

Рисунок 3 - OLED экран

Главный этап аппаратного конфигурирования — это сборка аппаратной части, состоящей из трёх элементов: платы Wemos D1 R1 mini, энкодера и OLED экрана. Сборку необходимо выполнить по схеме, приведённой на рисунке 4.

Рисунок 4 - Схема подключения

Требования к классам, отвечающим за ввод и вывод информации

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

Класс, работающий с энкодером, должен обрабатывать короткое и длительное нажатия кнопки, а также повороты вправо и влево.

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

Описание концепции игры

В игре «Танки» есть два танка и два флага. Один из танков управляется игроком, второй простейшим алгоритмом. Задача игрока, используя возможность стрельбы, уничтожить танк противника или его флаг. Задача врага противоположна задаче игрока. Повороты осуществляются на месте при помощи движения энкодера влево и вправо. Стрельба осуществляется коротким нажатием на кнопку, а движение вперёд длинным нажатием. Под длинным и коротким нажатием понимается удержание кнопки более 300 миллисекунд и менее соответственно.

Вывод графики

Устройство вывода информации позволяет выводить изображения 128 на 64 пикселя. Экран будет состоять из матриц 8 на 8 пикселей. Всего на экран поместится 128 таких

квадратов, а именно 16 столбцов по 8 строк. Будут присутствовать препятствия, снаряды, флаги и сами танки в четырёх направлениях. Самый простой способ: создать спрайты в любом растровом графическом редакторе и разбить её на 8 байтов в горизонтальном направлении для удобства использования в коде программы. Хорошо подходит программа разбиения изображения LCD Assistant. На рисунке 5 примеры созданных спрайтов.

Рисунок 5 - Спрайты дня игры «Ганки»

Список использованной литературы

1. Ролингз Э. Моррис Д. Проектирование и архитектура игр // Пер. с англ. -М.: ООО «И.Д. Вильямс». № 2. 2005. С. 400-420.

2. Гребнев В.В. Микроконтроллеры семейства АУЕ. фмрмы АШе1 // ИП РадиоСофт. 2002. С. 9-34.

3. Смит М. Д. Элементарные шаблоны проектирования // Пер. с англ. — М.: ООО «И.Д. Вильямс». 2013. С. 304.

4. Аллен Э. Типичные ошибки проектирования // Пер. с англ. -СПб.: Питер. 2003. С. 224.

5. Градди Б. Объектно-ориентированный анализ и проектирование с примерами приложений // Пер. с англ. — М.: ООО «И.Д. Вильямс». 2010. С. 720.