Найти в Дзене
П-Электроник Лаб

Мой первый DIY-гаджет: Игра на реакцию для двух игроков на ATmega328P (без Arduino).

Здравствуйте! Этот проект стал для меня важным этапом — первое устройство с полностью собственной печатной платой, разработанной от начала до конца. Ранее я собирал схемы на готовых модулях Arduino и макетных платах, но решил перейти к более компактному и автономному решению на «голом» микроконтроллере. Результат — миниатюрная игра на реакцию для двух игроков на базе ATmega328P. Устройство работает от одной батарейки CR2032 и не требует внешнего питания. Выпускаю статьи на чистом энтузиазме с вас подписка и лайк! Игра рассчитана на двух участников. У каждого игрока своя кнопка и индикаторный светодиод: оранжевый — для первого игрока, синий — для второго. Центральный зелёный светодиод служит сигналом старта. Игра проста в освоении, но требует хорошей реакции и внимания. Стремясь к минимализму, я выбрал питание от батарейки CR2032 (3 В). Микроконтроллер ATmega328P хорошо работает на внутреннем генераторе 8 МГц в этом диапазоне напряжений, что позволило обойтись без внешнего кварца. Стоим
Оглавление

Здравствуйте! Этот проект стал для меня важным этапом — первое устройство с полностью собственной печатной платой, разработанной от начала до конца. Ранее я собирал схемы на готовых модулях Arduino и макетных платах, но решил перейти к более компактному и автономному решению на «голом» микроконтроллере.

Результат — миниатюрная игра на реакцию для двух игроков на базе ATmega328P. Устройство работает от одной батарейки CR2032 и не требует внешнего питания.

Выпускаю статьи на чистом энтузиазме с вас подписка и лайк!

Правила игры

Игра рассчитана на двух участников. У каждого игрока своя кнопка и индикаторный светодиод: оранжевый — для первого игрока, синий — для второго. Центральный зелёный светодиод служит сигналом старта.

  • Перед началом игры центральный светодиод мигает три раза — сигнал готовности.
  • Далее следует случайная задержка от 1 до 5 секунд.
  • При загорании центрального светодиода игрок должен как можно быстрее нажать свою кнопку. Первый успевший получает очко, а его индикатор загорается на одну секунду.
  • Предусмотрена защита от преждевременных нажатий: если в период ожидания нажать кнопку более двух раз, игрок блокируется на текущий раунд.
  • Игра продолжается до 3 очков. Победа отмечается пятью быстрыми миганиями индикатора победителя.
  • После завершения раунда счёт сбрасывается автоматически.

Игра проста в освоении, но требует хорошей реакции и внимания.

Выбор компонентов

Стремясь к минимализму, я выбрал питание от батарейки CR2032 (3 В). Микроконтроллер ATmega328P хорошо работает на внутреннем генераторе 8 МГц в этом диапазоне напряжений, что позволило обойтись без внешнего кварца.

Перечень компонентов:

  • ATmega328P — 1 шт.
  • Тактовые кнопки 6×6 мм — 2 шт.
  • Светодиоды 5 мм (оранжевый, зелёный, синий) — 3 шт.
  • Резисторы 330 Ом (ограничение тока светодиодов) — 3 шт.
  • Резистор 10 КОм — 1 шт.
  • Конденсаторы 1 мкФ — 1 шт.
  • Держатель батарейки CR2032 — 1 шт.
  • Миниатюрный выключатель питания — 1 шт.

Стоимость комплекта на одну плату составит около 350–450 рублей.

-3

Шаг 1: Разработка прошивки и программирование микроконтроллер

Прежде чем собирать прототип, я сразу написал код в Arduino IDE — это позволило проверить логику .

Полный код с подробными комментариями могу опубликовать отдельной статьёй или выслать по запросу в комментариях. Здесь скриншоты ключевых частей:

Для экономии памяти и энергии сразу прошивал чистый ATmega328P без загрузчика Arduino через программатор T48. Настроил внутренний генератор 8 МГц (fuse-биты: low 0xE2).

Процесс:

  1. Скомпилировал скетч в Arduino IDE, получил .hex-файл.
  2. Установил ПО XGecu.
  3. Вставил чип в сокет программатора.
  4. Загрузил hex и записал fuse-биты.

Шаг 2: Прототипирование на макетной плате

С прошитым микроконтроллером собрал схему на макетной плате — это позволило окончательно убедиться в работоспособности.

Вставил чип в панельку, подключил кнопки и светодиоды по будущей схеме, питание от батарейки CR2032 (или от 3 В блока для удобства).

Проверил:

  • Стабильность работы на 3 В.
  • Корректность рандома.
  • Античит и дебаунс.

После успешных тестов перешёл к проектированию собственной платы.

Шаг 3: Проектирование платы в KiCad

Это был самый интересный и объёмный этап — первый опыт полноценной работы в KiCad.

Сначала создал новый проект и нарисовал принципиальную схему в Eeschema:

-8

Затем перешёл в Pcbnew для разводки платы:

После смотрим на 3D-визуализацию — очень помогает увидеть, как всё будет выглядеть в реальности.

Шаг 4: Заказ плат и сборка

Gerber-файлы загрузил на PCBWay. Параметры: 2 слоя, черная маска, HASL, толщина 1,6 мм, 5 штук.

Стоимость с доставкой — 2160 рублей. Пришли через 2 месяца.

-11

Шаг 5: Пайка на плате

Это был мой первый опыт ручной пайки SMD-компонентов. До этого я паял только THT — простые платы с большими деталями, где всё прощает ошибки. А тут — мелкие резисторы 0805, 32-ногий микроконтроллер и куча площадок, которые кажутся микроскопическими.

Честно говоря, с первого (и даже со второго) раза идеально не получилось. Швы вышли не такие аккуратные, как на фотографиях у профессионалов: где-то припоя чуть больше, где-то меньше, пару раз пришлось убирать мосты оплеткой.

Но главное — плата заработала! После вставки батарейки зелёный LED мигнул три раза, как и должно быть по прошивке. Никаких коротких замыканий, ничего не сгорело.

Я пока только учусь, и мои швы далеки от идеала, поэтому не судите строго :)

Итог

Этот проект дал бесценный опыт полного цикла разработки. Теперь я увереннее работаю с KiCad и программаторами.

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

Если статья понравилась — ставьте лайк и подписывайтесь!