Ретро-аркадные часы на Arduino Mega: интерактивные будильник с анимацией Pac-Man, Donkey Kong и Space Invaders
Необходимые компоненты
- Arduino Mega 2560 — 1 шт.
- TFT-дисплей 3,2" с сенсорным экраном (расширение для Mega) — 1 компл.
- Модуль реального времени DS3231 (RTC) — 1 шт.
- Модуль голосозаписи ISD1820 со встроенным микрофоном и динамиком — 1 шт.
- PLA-филамент для 3D-печати корпуса
- Двухкомпонентный эпоксидный клей / клеевой пистолет
- USB-кабель 2 м (для питания и прошивки)
- Хомуты для кабеля (3 шт.)
Опционально (автоподстройка яркости подсветки для прикроватных часов):
- Фоторезистор (LDR) — 1 шт.
- Резистор 270 кОм — 1 шт.
- Стабилитрон 3,3 В (0,5 Вт) — 1 шт.
- Резистор 47 Ом (0,5 Вт) — 1 шт.
Инструменты
- 3D-принтер (например, Creality Ender 3)
- Паяльник
Программное обеспечение
- Arduino IDE версии 1.0.6 (важно: новые версии IDE могут не скомпилировать старые библиотеки UTFT/URTouch)
- Библиотеки (в архивах проекта):
UTFT,URTouch,Time,DS1307RTC,Wire,EEPROM - Графические файлы (битмапы) в папке скетча
О проекте
Это интерактивные настенные/настольные часы в 3D-печатном корпусе в стиле аркадного автомата 80-х. На сенсорном экране анимируются спрайты: Марио, призрак Pac-Man, инопланетянин Space Invaders, пушка, Pac-Man, обезьянка (Donkey Kong). Есть 4 режима работы (выбираются прошивкой):
- Arcade Clock — демонстрационные анимации персонажей + часы.
- Pacman Clock — интерактивная мини-игра Pac-Man с функциями часов.
- DK Clock — интерактивная мини-игра Donkey Kong с часами.
- Tumble Ghost — клон Flappy Bird с призраком Pac-Man.
Будильник: записываете любой звук через микрофон ISD1820 (например, тему Pac-Man), настраиваете время срабатывания через сенсорное меню. Выключение будильника — касание центра экрана.
Сборка электроники (ключевые моменты)
1. Модуль RTC DS3231
Монтируется на обратной стороне Arduino Mega. Автор использовал горячий клей и поролон для изоляции контактов. Питание 5V и GND — проводом, SDA/SCL — можно припаять прямо к ногам Mega (A4/A5). Батарея CR2032 на модуле сохраняет время при отключении питания.
2. Модуль звука ISD1820
Также клеится на заднюю сторону Mega с изоляцией. Управление — пин D8 (Arduino). Запись звука: нажимаете REC на модуле и воспроизводите звук с другого устройства в микрофон. Проверка — кнопка PLAY-E.
3. Автоподстройка яркости (опционально)
Подсветка TFT жёстко припаяна к 3,3 В. Чтобы управлять ею PWM с пина D9:
- Снимите TFT с шилда. Найдите пин 19 (LED_A). Согните его вбок, сдергив изоляцию.
- Припаяйте резистор 47 Ом к согнутому пину и проводом к D9 Mega.
- К тому же пину (LED_A) припаяйте анод стабилитрона 3,3 В, катод — на GND (защита от перенапряжения).
- Фоторезистор (LDR) вставьте в два отверстия 3 мм в задней стенке корпуса, зафиксируйте клеем. Выводы LDR — на A7 (через 270 кОм на землю) и 3,3 В.
4. Экран и шилд
Аккуратно вставьте TFT в шилд, шилд — на Mega. Питание — через USB-кабель, впаянный в разъём Mega (защита от перегрузки, возможность перепрошивки без разборки).
Прошивка и настройка
- Установите Arduino IDE 1.0.6.
- Добавьте библиотеки из архивов (Sketch → Include Library → Add .ZIP Library).
- Положите графические файлы (.c/.h) в папку скетча.
- Загрузите один из 4-х скетчей (RetroArcadeClock, Retro_Pacman_Clock, Retro_DK_Clock, Tumble_Ghost).
- После загрузки нажмите центр экрана — откроется меню настройки. Установите время и будильник (24-ч формат), нажмите SAVE.
- Проверьте будильник: поставьте срабатывание через пару минут.
- При необходимости откалибруйте тачскрин (пример из библиотеки URTouch).
Особенности кода
- Анимация персонажей: каждый кадр сдвигает спрайты по экрану, стирая след.
- Часы: крупные 7-сегментные цифры (шрифт
SevenSeg_XXXL_Num), обновление только изменившихся разрядов — без мерцания. - Яркость: АЦп считывает LDR, порог ~120: день — 255 (макс), ночь — 45 (минимум) на PWM D9.
- Будильник: флаг в EEPROM, звук через D8 (переключение LOW→HIGH→LOW запускает воспроизведение ISD1820). Повтор каждые ~20 сек до касания экрана.
Корпус
Файлы для 3D-печати на Thingiverse: thing:3017701. Печатается на Ender 3. Сборка: передняя панель с экраном клеится на горячий клей, задняя — прижимается шнуром питания с ухом (хомут внутри).
Ссылки
- Thingiverse корпус: здесь
- Архивы с кодом и библиотеками — в разделе Code исходного проекта.
Производственный процесс
- Сборка светодиодного секвенсора на таймере 555 и счетчике 4017: деление частоты и устранение дребезга
- Кукушка: история, мастерство и современная эволюция
- Arduino POV-часы: сборка дисплея на эффекте сохранения образа
- Генератор тактового сигнала в Verilog: проектирование и реализация
- Слово-часы (Word Clock) на Arduino — DIY-часы с текстовой индикацией времени
- TeleBall: ретро портативная игровая консоль на Arduino — собирайте сами Breakout и Tennis for Two
- Создание пользовательских LED-часов с будильником — видно с 12 метров
- Ingegno Retro Games Console — 8-битные игры в новом формате
- Итальянские словесные часы на Arduino Nano, NeoPixel, LCD и RTC
- Бесконечное зеркало-часы: элегантный дизайн и точное время