Geekmagic & ProtoMach
Я тут набросал идею модульной доски, которая реагирует на ходы игроков через датчики. Представь себе механические шахматы, но с программируемыми фигурами. Как тебе такое?
Звучит просто бомбически – прямо как настоящий квест Рубе Гольдберга в шахматах! Если у каждой фигуры микроконтроллер, можно запрограммировать их тактику на ходу. Только аккуратнее с задержками; понадобится надёжная система питания и, может быть, защита от сбоев, чтобы доска не превратилась в полный хаос. Но в целом – убойная идея, смесь технологий и стратегии настолки. Что будет твоей первой прототипной фигурой?
Первый прототип сделаем пешку. Простая форма, прямые линии, легко будет установить микроконтроллер и две кнопки – для движения вперёд и захвата. Возьму энергоэффективный МК, небольшой аккумулятор и предохранитель на всякий случай. Никаких изысков с покраской, просто рамка из полированной нержавейки и старая кружка от кофе для флюса. Если что-то пойдёт не так, просто перепаяю плату, подкорректирую тайминги и соберу заново. Вот такой план.
Звучит как неплохая отправная точка. Простейший ход пешки позволит держать код лаконичным, а стальная рама выдержит многократные манипуляции. Не забудь про экономичный аккумулятор, чтобы микроконтроллер не отключался между ходами, и маленький сброс – выручит от зависания без переворота всей платы. Как только пешка начнет отвечать на ход, доска готова к следующему этапу. Удачи, и дай знать, если понадобится подправить прошивку!
Спасибо. Подключу к МСУ регулятор напряжения 1.8V с низким падением, запущу на 8 мегагерц. Ограничу количество выводов до минимума – только светодиод состояния и по два входа на каждую фигуру. Если увидишь ошибку в конечном автомате, просто пришли гекс. Я патчу, перепрошиваю и снова тестирую. Никаких проблем.
Отлично, просто скинь код автомата состояний в файл, я пробегусь по нему. И заодно проверь граничный случай с повышением, на всякий случай, если пешка дойдет до конца и светодиоды начнут глючить. Удачи с кодом!
Привет,
Смотри, state machine для MCU пешки (в стиле C, без всяких библиотек).
Просто скопируй код в свою IDE, прошей и тестируй.
С кнопкой Reset: подключи pull-up GPIO к прерыванию, очисти все флаги и установи `pawn_state = IDLE` при нажатии.
Это не даст светодиодам гореть после сбоя и позволит проверить граничный случай продвижения, не разбирая всю плату.
Скажи, если логика требует подправки.
Привет,
Машина состояний почти готова, но есть пара нюансов, которые могут доставить неприятности. Во-первых, при повышении ранга ты включаешь светодиод, но забываешь его выключать, поэтому он горит до следующего нажатия кнопки. Если хочешь, чтобы светодиод мигал или сбрасывался, добавь команду LED_off при каждом переходе между состояниями. Во-вторых, ты устанавливаешь pawn_state в IDLE после нажатия кнопки после повышения ранга, но не сбрасываешь светодиод, который горел для этого повышения. В итоге доска может оставаться подсвеченной и запутывать. Если добавишь процедуру сброса, которая очищает все светодиоды и флаги состояния, ты избежишь этой проблемы. Удачи с подсветкой!
Понял. Добавлю LED_off для каждого переключения состояния и рутину сброса, которая очистит все флаги и светодиоды. Это не даст рекламному светодиоду гореть бесконечно. Спасибо, что предупредил. Сейчас выложу обновлённый код.