Создание классической аркадной игры на Arduino с LCD, зуммером и джойстиком
Компоненты и материалы
- Arduino UNO — 1 шт.
- Макетная плата (breadboard) — 1 шт.
- Перемычки (набор) — 1 шт.
- USB-кабель (A на B) — 1 шт.
- Потенциометр (10 кОм) — 1 шт. (для регулировки контраста LCD)
- Аналоговый джойстик с кнопкой — 1 шт.
- Пьезоизлучатель (зуммер) — 1 шт.
- LCD-дисплей 16×2 (синий с белой подсветкой) — 1 шт.
Необходимые инструменты
- Компьютер с установленной Arduino IDE
О проекте
Этот проект реализует классическую аркадную игру «Бегущий человек» на базе Arduino. Игрок управляет персонажем, который бежит по экрану и должен перепрыгивать препятствия, нажимая кнопку на джойстике. Зуммер издает звуки при столкновении и прыжке, добавляя игровую атмосферу. Цель — набрать максимум очков (по одному за каждую секунду выживания).
Схема подключения
Схема показана на изображении ниже. Все компоненты подключаются к Arduino согласно таблице пинов в коде.

Программный код
Код использует библиотеку LiquidCrystal для работы с дисплеем. Создаются пользовательские символы для героя, земли и препятствий. Игровая логика включает генерацию случайного ландшафта, обработку нажатий кнопки (прерывание), анимацию прыжка и бега, подсчет очков и звуковые сигналы.
#include <LiquidCrystal.h>
#define PIN_BUTTON 2
#define PIN_AUTOPLAY 1
#define PIN_BUZZER 8
#define PIN_READWRITE 10
#define PIN_CONTRAST 12
// ... определения спрайтов и состояний героя ...
LiquidCrystal lcd(11, 9, 6, 5, 4, 3);
// ... массивы ландшафта, флаги, функции инициализации графики ...
void initializeGraphics() { /* создание пользовательских символов */ }
void advanceTerrain(char* terrain, byte newTerrain) { /* сдвиг ландшафта */ }
bool drawHero(byte position, char* terrainUpper, char* terrainLower, unsigned int score) { /* отрисовка героя, проверка столкновений */ }
void buttonPush() { buttonPushed = true; } // прерывание
void setup() { /* настройка пинов, прерываний, LCD */ }
void loop() { /* основной игровой цикл */ }
Полный код доступен в разделе «Code» оригинального проекта.
Как запустить
- Соберите схему согласно рисунку.
- Установите Arduino IDE и загрузите скетч в плату.
- Отрегулируйте контрастность дисплея потенциометром.
- Нажмите кнопку на джойстике для старта игры.
Производственный процесс
- TinyML-детектор языка на Arduino Nano 33 BLE Sense с Edge Impulse
- Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
- Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
- Создание рулетки на 37 светодиодов с Arduino Nano
- DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер
- Интерактивная игра с джойстиком и LED-обратной связью на Arduino
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Pixel Chaser: игра на один тап с NeoPixel Ring и Arduino Nano
- Самодельный осциллограф на Arduino Nano (10 Гц – 50 кГц) с ЖК-дисплеем 128×64
- Сборка аудиореактивной настольной лампы на Arduino Nano