Skip to the content
2 layers98.3 × 116.8 mmAurdino game, the printed circuit board in 3D

An Arduino Uno-based endless runner game on a 16×2 LCD with custom pixel-art characters, dynamic difficulty scaling, and a full KiCad PCB design.

Size
98.3 × 116.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
5
Nets
36
Pads
60
Tracks, vias
88, 0
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
4 Jul 2026
Updated
4 Jul 2026

Overview

Aurdino game is an open-source printed circuit board by nirav1385, from the nirav1385/Arduino_Game_KiCad repository on GitHub. It is a 2-layer board of 98.3 × 116.8 mm with 5 parts on 36 nets, routed with 88 tracks and 0 vias.

It is built around the ARDUINO UNO R3. Its parts include 2 resistors and 1 switch. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

1

README

README.md

🎮 Boy-Run — Arduino LCD Endless Runner Game

A retro-style endless runner game built with Arduino Uno and a 16×2 LCD Display. Jump over obstacles, beat your high score, and watch the speed ramp up!


📖 About The Project

Boy-Run is a fun, retro-style endless runner game that runs entirely on an Arduino Uno with a 16×2 LCD screen. A custom pixel-art boy character sprints across the bottom row of the LCD, and the player must time their jumps to dodge incoming brick obstacles.

As your score climbs, the game speeds up — making each jump more challenging than the last. One wrong move and it's Game Over!

✨ Key Features

FeatureDescription
🏃 Custom AnimationUses custom character bytes (boyCharacter, brickCharacter) to render a running boy and brick obstacles on the LCD
⚡ Dynamic DifficultyGame speed starts at 400ms and decreases by 20ms per point (minimum 100ms), making the game progressively harder
💥 Collision DetectionInstant game-over detection when the boy and obstacle occupy the same position
🏆 Live Score TrackingReal-time score display on the top-right corner of the LCD screen
🔁 Infinite ReplayPress the button again after Game Over to restart instantly

🔧 Components Required

#ComponentQuantityPurpose
1Arduino Uno R31Microcontroller — the brain of the game
216×2 LCD Display1Game screen for rendering characters & score
3Push Button1Jump control input
41KΩ Resistor1LCD contrast control (connected to V0 pin)
5220Ω Resistor1LCD backlight protection
6Breadboard1Circuit prototyping base
7Jumper Wires~15Connecting all components together

🔌 Circuit & Pin Configuration

The LCD is connected in 4-bit mode to save Arduino pins:

LCD PinArduino PinDescription
RS7Register Select
EN8Enable
D49Data Bit 4
D510Data Bit 5
D611Data Bit 6
D712Data Bit 7
V0via 1KΩ ResistorContrast Adjustment
A (Backlight)via 220Ω ResistorBacklight Power

Push Button → Connected to Pin 2 (uses INPUT_PULLUP, so no external pull-up resistor needed)

📸 Circuit Images

Circuit View


🕹️ How To Play

text
1. 🔌 Power Up    →  Connect the Arduino to USB or external power
2. 🟢 Start       →  LCD shows "Start Game — Press Button!"
3. 🏃 Run         →  The boy character starts running on the bottom row
4. ⬆️ Jump        →  Press the Push Button to jump over incoming bricks
5. 💀 Game Over   →  If the boy collides with a brick, your score is shown
6. 🔁 Restart     →  Press the button again or hit Arduino's Reset button

🎯 Pro Tips

  • Timing is everything — press the button just before the brick reaches you
  • The boy stays in the air for 3 game cycles, so don't jump too early!
  • Speed increases with every obstacle cleared — stay focused at higher scores

🧠 How It Works (Code Logic)

The game's lifecycle is divided into four main phases, executed sequentially on the microcontroller:

  1. Initialization (setup)

    • The LiquidCrystal library initializes the 16×2 LCD screen.
    • Custom 5x8 pixel glyphs (the boy character's running frames, jumping frame, and the obstacle brick) are uploaded to the LCD's CGRAM using lcd.createChar().
    • The jump button pin (Pin 2) is configured with INPUT_PULLUP to eliminate the need for external pull-up resistors.
  2. Start Screen (Idle State)

    • The LCD displays a splash screen: Boy-Run / Press Button!.
    • The micro-controller executes a simple loop waiting for Pin 2 to detect a button press (signal pulls LOW).
  3. Active Game Loop During active play, the game updates once per frame (governed by the dynamic delay duration):

    • Read Input: The system polls Pin 2. If the button is pressed and the boy is on the ground, a jump is initiated.
    • Update Positions:
      • The Boy: The character's state updates. If jumping, the boy is rendered on the top row of the LCD and stays in the air for 3 frame cycles before gravity pulls him back. If on the ground, the running animation toggles between two frames.
      • The Obstacles: Brick obstacles spawn on the far right (column 15) and move one column to the left in every frame.
    • Collision Check: The game checks if the boy's row/column matches the obstacle's row/column. If a match is found, it triggers a collision.
    • Scoring & Speed Ramp: If the obstacle safely reaches the left-most column (column 0) without collision, the player's score increases by +1. Every point decreases the frame delay by 20ms (starting at 400ms down to a minimum threshold of 100ms), gradually increasing the difficulty.
  4. Game Over & Restart

    • Upon collision, the game pauses, clears the screen, and displays a Game Over! message with the final score.
    • It waits for a button press to clear all states, reset the score and speed to default, and restart the game.

Speed Progression

ScoreDelay (ms)Difficulty
0400🟢 Easy
5300🟡 Medium
10200🟠 Hard
15+100🔴 Maximum!

📂 Folder Structure

text
aurdino_game/
│
├── 📁 firmware/                        # Source code & component data
│   ├── game_in_c.ino                   # Main Arduino sketch (game logic)
│   └── component_list.csv              # Bill of materials (BOM)
│
├── 📁 hardware/                        # KiCad PCB design files
│   ├── aurdino_game.kicad_sch          # Schematic file
│   ├── aurdino_game.kicad_pcb          # PCB layout file
│   └── aurdino_game.kicad_pro          # KiCad project file
│
├── 📁 images_&_video/                  # Project media & documentation
│   ├── circuit_view.jpg                # Breadboard circuit photo
│   ├── game_video.mp4                  # Gameplay demo video
│   └── *.jpeg                          # Additional project images
│
└── README.md                           # You are here! 📍

🚀 Getting Started

Prerequisites

  • Arduino IDE (v1.8+ or v2.x)
  • LiquidCrystal library (comes pre-installed with Arduino IDE)
  • KiCad (optional — only needed to view/edit PCB designs)

Upload the Game

bash
1. Open `firmware/game_in_c.ino` in Arduino IDE
2. Select Board → "Arduino Uno"
3. Select the correct COM Port
4. Click Upload ▶️
5. Play! 🎮

🛠️ Built With

Arduino C++ KiCad


📜 License

This project is open source and available for educational purposes. Feel free to modify, learn from, and share it!


Made with ❤️ and an Arduino Uno

Parts

5
QtyValueFootprintReferences
11KResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1
1220Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR2
1Arduino_UNO_R3Module:Arduino_UNO_R3A1
1SW_PushButton_Switch_THT:SW_PUSH_6mmSW1
1WC1602ADisplay:WC1602ADS1

Similar boards

  • 2 layers68.8 × 53.6 mmRelatively Universal ROM Programmer, the printed circuit board in 3D

    Relatively Universal ROM Programmer

    AndersBNielsen/Relatively-Universal-ROM-Programmer

    Hardware to program W27C512 EEPROM or any 24/28/32 pin ROM requiring from 5V to 27V programming voltage.

    149 parts257GPL-3.0
  • 2 layers69.1 × 53.8 mmMotor controller, the printed circuit board in 3D

    Motor controller

    AlanFord/self-balancing-stick

    Dual Axis Reaction Wheel Inverted Pendulum

    25 parts79MIT
  • 2 layers68.6 × 53.3 mmProtogasm Board V2, the printed circuit board in 3D

    Protogasm Board V2

    Edging-Machines/Edging-Machines

    This repository is intended to contain as much information as possible about building, designing, prototyping, and using automated edging machines.

    14 parts67MIT
  • 2 layers53.8 × 69.6 mmEVSE V2 2, the printed circuit board in 3D

    EVSE V2 2

    PedroCNeves/AC_ChargingStation

    A learning project to create an EV AC Charging station based on an Arduino Uno

    32 parts50
  • 2 layers113.7 × 61 mmArduTester SMD, the printed circuit board in 3D

    ArduTester SMD

    jonsag/arduTester

    An arduino component tester based on https://create.arduino.cc/projecthub/plouc68000/ardutester-v1-13-the-arduino-uno-transistor-tester-dbafb4

    17 parts14
  • 4 layers65.9 × 52.9 mmMotor shield, the printed circuit board in 3D

    Motor shield

    DCC-EX/EX-MotorShield8874

    Design files for the open source 5A Motor Shield

    114 parts12
  • 4 layers68.6 × 53.3 mm101 PCB, the printed circuit board in 3D

    101 PCB

    ICRS/101

    The all-new open source Robotics 101 course from ICRS. It's specifically designed to be run in hackspaces, after school clubs and university societies.

    89 parts10CC-BY-4.0
  • 2 layers53.3 × 68.3 mmAnac 2040, the printed circuit board in 3D

    Anac 2040

    rallekralle11/Anna2040

    RP2040-based board in the shape of the Arduino uno

    63 parts9

Questions

How big is the Aurdino game PCB?

It measures 98.3 × 116.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Aurdino game use?

5 parts, built around the ARDUINO UNO R3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Aurdino game KiCad files?

From the nirav1385/Arduino_Game_KiCad repository on GitHub, at the commit this page was made from: the board is hardware/aurdino_game.kicad_pcb and its schematic hardware/aurdino_game.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Aurdino game design in my own project?

Its repository states no licence, so its author keeps all rights: ask nirav1385 before reusing the design.