Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Игрушки >

Теги статьи: Добавить тег

Светодиодная игра «Поймай Зайчика»

Автор: Сергей Безруков (aka Ser60) и Наум Кузмановски, sergeilb60@mail.ru
Опубликовано 18.10.2019
Создано при помощи КотоРед.

Разработка идеи этой игры и её программная реализация выполнены студентом 1-го курса из Македонии, Наумом, как семестровый проект в моём курсе по встроенным системам. Это был его первый самостоятельный проект на микроконтроллере.


В игре одновременно принимают участие два человека, хотя для тренировки возможно играть с самим собой. Первоначально на светодиодной матрице высвечиваются два символа – стрелки: символ “<” зелёным цветом в левой части матрицы (см. ниже) и символ “>” красным цветом в правой. Цвета соответствуют игрокам, у каждого из которых имеется по кнопке, расположенной в левой и правой частях платы.

Спустя несколько секунд после заставки, по периферии матрицы начинают бегать два «зайчика» - зелёный и красный. Каждому из игроков следует нажать кнопку в тот момент как зайчик его цвета появится в углу матрицы, ближайшему к кнопке игрока (как, например, красный зайчик в самой правой ячейке матрицы). Если игроку это удалось, то он получает очко. Выигравшим считается игрок, который первый заработал 3 очка, после чего игра начинается сначала. Текущий счёт игры высвечивается на горизонтальной диагонали матрицы в виде полоски точек соответствующего цвета в левой части диагонали для «зелёного» игрока, и в правой - для «красного». Зайчики перемещаются по часовой стрелке на периферии матрицы. При нажатии на любую кнопку движение зайчиков приостанавливается на некоторое время и потом возобновляется с того-же места. Если какой-либо игрок «промазал», то его зайчик начинает двигаться быстрее, а зайчик другого игрока – медленнее. При «поимке» зайчика любым из игроков производится изменение счёта на диагонали и движение зайчиков возобновляется в том-же направлении со случайно выбранных позиций на периферии, симметрично расположенных относительно центра матрицы, и случайно выбранной одинаковой скоростью. См. демонстрацию игры на видео в конце статьи.

Игра реализована на микроконтроллере IC1 начального уровня Zero Gecko семейства EFM32 производства компании Silicon Labs. МК тактируется на дефолтной частоте 14 мгц от внутреннего генератора. В качестве дисплея применена двуцветная матрица типа LEDM88RGCA. Матрица управляется драйвером IC2 в варианте с 28 выводами корпуса. Драйвер этот ниже по цене и проще, чем часто используемый MAX7219. Он также может быть использован для чтения состояний нескольких кнопок (эта фунция в устройстве, однако, не задействована). Яркость свечения точек матрицы может регулироваться программно путём изменения содержимого соответствующего регистра IC2. Драйвер автоматически обеспечивает динамическую индикацию изображения на дисплее, предварительно записанного в его внутреннюю память. Таким образом, микроконтроллеру следует общаться с драйвером только при изменении изображения на дисплее. Связь МК с драйвером производится по интерфейсу I2C на частоте тактирования около 400 кгц. Программа МК написана на языке С и отлажена в свободной версии системы Keil µVision. Исходные тексты модулей программ всего проекта прилагаются. Разъём SV1 предназначен для внутрисхемного программирования МК.

Схема питается от четырёх батарей типоразмера AA. Понижение напряжения батарей до 3.3В, необходимого для МК, производится преобразователем на IC3. Отмечу, что драйвер IC2 нормирован на работу от 5В. Однако, как показала практика, он отлично работает и при питании от 3.3В. Сбоев в его работе не наблюдалось.

Плата устройства выполнена из одностороннего фольгированного материала толщиной 1.6мм. Несколько неразведённых соединений реализованы проволочными перемычками. Плата смонтирована на стойках высотой 15мм, установленных на пластине основания такого-же размера. На основании размещён держатель батарей. Файл платы для системы Eagle прилагается.


Файлы:
Firmware и плата


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

16 5 3