Игра микропроцессорная пиксельная. А именно виртуальный питомец с некоторыми особенностями или как ей прозвали в народе: Понигочи.
Хотите верьте, хотите нет, но изначально была написана программа питомца, которая была прикручена к определенному блоку земли в майнкрафте, который по задумке надо было найти, вырастить и из него получить некое случайное животное… Да я любитель Sky-Land, а с животными там всегда беда и их приходится чуть ли не через всю карту приносить себе на базу.
История создания
В общем шел очередной месяц карантина, а учитывая что в доме был затеян ремонт, то вещи из одной комнаты были раскиданы по остальным. В итоге у меня не осталось доступа к моим ящикам с деталями, а осталось то, что есть на столе и куча…
Если не пару факторов, то этот проект и не существовал бы:
1 — я уже больше года хочу что либо собрать, на базе STM32. Собирать какие либо проекты с 3-мя светодиодами или банально какую либо ненужную вещь, вроде робота, который движется по линии, я не хочу;
2 — исходя из ситуации в квартире, то все какие либо нужные детали, находятся в шкафах ,которые завалены вещами снаружи и доступа к ним нет. Т.е. я не могу чинить электронику, делать что либо из журналов Радио времен СССР, да и просто пытаться изобрести опять что либо на базе деталей, которые старше меня.
3 — пожалуй самый главный фактор это НБК и поездка моего товарища со своим стендом. Кстати большая благодарность Александру за эту возможность.
В общем я решил свою задумку сделать в железе на базе STM32.
Все собрано из того, что было в наличии. Кусок текстолита так вообще весь был кривой, грязный и мятый. Корпусные детали изготовлены из частей от холодильника, резисторы и микросхемы выпаяны из ненужных плат. Единственное, что я купил это кнопки, контроллер заряда и пачку отладочных плат в Китае.
С матрицей же вышла забавная история. Банально в магазине не было матрицы 16х16 желтого цвета. Зато были в наличии 256 светодиодов. В общем я купил светодиоды, развел плату, просверлил отверстия ~1024 шт т.е. на светодиоды 512 и на перемычки 512, запаял все светодиоды, развел, вытравил плату дешифратора, все запаял, проверил и собрал в корпус. Аппаратная часть была сделана за 1 день, на корпус ушли 2 недели, потому, что некоторые места были пролиты пластиком, растворенным в дихлорэтане.
В общем хватит лирики, перейдем же к самому устройству.
Описание устройства
Устройство состоит из светодиодной матрицы 16х16, платы дешифратора и отладочной платы с микроконтроллером STM32F103C8T6. Как выше и говорил, все сделано из деталей, которые буквально «валялись у меня под ногами». Не переживайте я по ним не ходил, просто гора плат, лежащая уже не первый год на полу, как бы намекает что пора её пустить в дело или наконец уже выкинуть.
Главный «спонсор» радиодеталей, начиная с 2018 года:
Во время создания устройства меня ожидал целый ряд проблем. Сначала у меня не получилось разобраться с рандомайзером в C. Но проблема решилось банально с помощью «include <stdlib.h>». Потом проблемы были с динамической индикацией, засветка элементов меня долго мучала, но как оказалось надо сначала занести данные в регистр сдвига(ир8) а уж только потом зажечь нужную строку. Если сделать наоборот, то весь процесс сдвига будет виден на матрице. Отладка самой программы заняла больше времени, целая куча проблем была в коде который не работал как надо. Некоторые функции пришлось переписывать с 0, опираясь на логику которую я познал во время дебага…
Рисование состояний лошади и пунктов меню тоже заняло не 1 день, некоторые моменты были нарисованы 1м движением руки. Например лошадь в обычном состоянии.
В связи с тем, что сроки поджимали пришлось делать весь корпус особо не документируя. Качество фотографий оставляет желать лучшего. А нормально снять рабочее устройство трудно. Чтобы это сделать надо ставить большую выдержку, иначе у нас появляются полосы. Да и фокусироваться на горящих светодиодах идея не очень хорошая. Так что за качество фотографий я извиняюсь.
В общем ниже можно пролистать галерею с фотографиями, на котором изображен процесс работы.
Здесь же несколько фотографий с первыми попытками запуска устройства:
изображения не найдены
Самая первая попытка запустить динамическую индикацию. Корпуса еще нет, а пластик до сих пор в гараже. Рандом из C еще не изучен.
Попытка в осмысленную работу. Запуск игры «жизнь». С рандомом я еще не разобрался и по этому у нас постоянно один результат симуляции. А еще есть проблема в паразитной засветке светодиодов.
Первая попытка в вывод картинки на экран, а так же прикручена анимация. Паразитная засветка не устранена еще, но зато у нас появились отверстия под органы управления.
Начало логического управления положено. Кнопки установлены, корпус зашкурен и отмыт. Первое что я попробовал, это игра Пинг-Понг.
Небольшое видео с процессом отладки а так же демонстрация работы некоторых функций.
Демонстративное видео с описанием работы. Под спойлером т.к. снято быстро и не было время на нормальный сценарий и пр.
Обновление к Майскому конвенту
Итак работы была запланировано много, но из-за некоторых, независящих от меня обстоятельств, проделано было далеко не все, что хотелось.
Первым делом представлю я вам фотографии нашей «Понигочи» до всех изминений.
изображения не найдены
Как видно все сделано в лучших традициях самоделок. У нас есть и присерансы в виде макетных плат, и контроллер заряда в изоленте, кстати старую версию можно было зарядить только разобрав её. Очень некачественные боксы для аккумуляторов типа 18650, благодаря которым у нас всегда работал лишь 1 АКБ. Кстати приклеены они на цианакрилатный клей, изначально я думал, что полиэтилен и поливинилхлорид крайне неактивно будут сцепляться и даже сделал сетку насечек, чтобы все хорошо держалось. Но как оказалось, это все было зря. Цианакрилатный клей прекрасно приклеил полиэтилен к поливинилхлориду, в отличие от дихлорэтана. Так что оторвать это было очень проблематично, с помощью отвертки поддевать и оставлять вмятины на корпусе понигочи, которые потом выпирали сверху. Пришлось эти места прогреть и заново все зашлифовать.
Интересные факты
Так для обработки корпуса был изготовлен «станок»:
Так же была написана программа на JAVA для преобразования PNG в двумерный массив.
Много было проведено различных экспериментов с матрицей. Динамическая индикация меня вообще по началу ввела в ступор, но потом я все сделал правильно. Главное, что работает.
С кнопками тоже беда была. Одна кнопка недожималась. пришлось покупать еще одну.
А так в принципе проект мне понравился и дорабатывать я его буду.
Надо добавить больше игр и больше интерактива с лошадью. Может быть даже сделать матрицу 32*32. Но все равно этот проект будет завершен.