Skip to content

Commit 9bc1404

Browse files
Update README.md
1 parent 98b719a commit 9bc1404

1 file changed

Lines changed: 36 additions & 29 deletions

File tree

README.md

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,52 @@
1-
# Arduino LCD Mini-Games Collection
1+
# Arduino LCD Mini-Games Console (Menu UI + Screensaver)
22

33
A collection of classic games and utilities for the Arduino Uno with a 16x2 LCD Keypad Shield.
44
Navigate a menu to play games like Snake, Break the Bricks, Chrome Dino, Helicopter, and more—all on a simple LCD display!
55

6-
## Features
6+
## 🧰 Hardware
7+
- **Arduino Uno** (ATmega328P)
8+
- **16×2 LCD Keypad Shield** (DFRobot-style, buttons via **A0** resistor ladder)
9+
10+
## 🛠 Features
711

812
- **Menu UI**: Select games and utilities from a simple LCD menu ([UI/UI.ino](UI/UI.ino))
913
- **Snake Game**: Classic snake with multiple levels ([snake_game/snake_game.ino](snake_game/snake_game.ino), [UI/snake_game.ino](UI/snake_game.ino))
1014
- **Break the Bricks**: Arkanoid-style brick breaker ([Break_the_Bricks/Break_the_Bricks.ino](Break_the_Bricks/Break_the_Bricks.ino), [UI/Break_the_Bricks.ino](UI/Break_the_Bricks.ino))
11-
- **Chrome Dino Game**: T-Rex runner clone ([Chrome_Dino_Game_16x2.ino](Chrome_Dino_Game_16x2.ino))
15+
- **Chrome Dino Game**: T-Rex runner clone ([Chrome_Dino/Chrome_Dino.ino](Chrome_Dino/Chrome_Dino.ino)), [UI/Chrome_Dino.ino](UI/Chrome_Dino.ino))
1216
- **Helicopter Game**: Dodge obstacles as a helicopter ([Helicopter_Game/Helicopter_Game.ino](Helicopter_Game/Helicopter_Game.ino), [UI/Helicopter_Game.ino](UI/Helicopter_Game.ino))
1317
- **Decision Compass**: Magic 8-ball style random answer generator ([Decision_Compass/Decision_Compass.ino](Decision_Compass/Decision_Compass.ino), [UI/Decision_Compass.ino](UI/Decision_Compass.ino))
1418
- **How Many Days Until**: Date calculator for days/months/years between two dates ([How_Many_Days_Until/How_Many_Days_Until.ino](How_Many_Days_Until/How_Many_Days_Until.ino), [UI/How_Many_Days_Until.ino](UI/How_Many_Days_Until.ino))
1519
- **Eye Animation**: Fun idle animation ([UI/EyeAnimation.ino](UI/EyeAnimation.ino))
1620

17-
## Hardware Requirements
21+
## 🎮 Controls
22+
LCD Keypad Shield buttons read through **A0**. The UI maps them to `UI_BTN_*` constants; games that need their own constants use a separate namespace (`DINO_BTN_*`). Typical actions:
23+
- **UP/DOWN**: menu navigation
24+
- **RIGHT/LEFT**: Game navigation
25+
- **SELECT**: choose / start / restart
26+
- **RST (RESET)**: commonly used as back/exit in some games or wrappers
27+
28+
## 🏗 Architecture
29+
- **Single LCD instance**: `LiquidCrystal lcd(8,9,4,5,6,7)` lives in `UI.ino`. Games use `extern LiquidCrystal lcd;` when embedded.
30+
- **Button reader**: one `read_LCD_buttons()` in `UI.ino`; games reuse via `extern` when embedded.
31+
- **App runners**: each game exposes `void runXYZ();` which the UI calls (e.g., `runSnakeGame()`).
32+
- **Screensaver**: `EyeAnimation` is called when `(millis() - lastActivityMs) >= 30000` while in `MENU` state.
1833

19-
- Arduino Uno (or compatible)
20-
- 16x2 LCD Keypad Shield (DFRobot or similar)
21-
- (Optional) Passive buzzer for sound effects (some games)
34+
## 🕹 Games & utilities
35+
- **Chrome Dino**: two-cell T-Rex (CREA style), **cactus** (ground) + **bird** (top), **score-based tick speed**, fixed **Game Over** edge-case, HUD score.
36+
- **Snake**: body stored as a **linked list**; food spawn, self-collision, incremental speed.
37+
- **Break-the-Bricks**: paddle + bricks on 16×2; compact physics for character LCD.
38+
- **Helicopter**: side-scroller with obstacle gaps.
39+
- **Decision Compass**: pseudo-random choices (like a Magic-8).
40+
- **How Many Days Until**: date/interval utility on the LCD.
41+
- **Eye Animation**: used standalone and as the **idle screensaver**.
2242

23-
## File Structure
43+
## 🗂️ File Structure
2444

2545
```
26-
Chrome_Dino_Game_16x2.ino
2746
Break_the_Bricks/
2847
Break_the_Bricks.ino
48+
Chrome_Dino/
49+
Chrome_Dino.ino
2950
Decision_Compass/
3051
Decision_Compass.ino
3152
Helicopter_Game/
@@ -36,6 +57,7 @@ snake_game/
3657
snake_game.ino
3758
UI/
3859
Break_the_Bricks.ino
60+
Chrome_Dino.ino
3961
Decision_Compass.ino
4062
EyeAnimation.ino
4163
Helicopter_Game.ino
@@ -44,25 +66,10 @@ UI/
4466
UI.ino
4567
```
4668

47-
- The `UI/` folder contains menu-integrated versions of each game/utility.
48-
- The root and other folders contain standalone versions.
49-
50-
## How to Use
51-
52-
1. **Menu Version:**
53-
- Open [UI/UI.ino](UI/UI.ino) in the Arduino IDE.
54-
- Upload to your Arduino Uno with the LCD Keypad Shield attached.
55-
- Use the shield’s buttons to navigate and select games/utilities.
56-
57-
2. **Standalone Games:**
58-
- Open any `.ino` file outside `UI/` (e.g., [Chrome_Dino_Game_16x2.ino](Chrome_Dino_Game_16x2.ino)).
59-
- Upload to play that game directly.
60-
61-
## Controls
62-
63-
- **UP/DOWN/LEFT/RIGHT/SELECT**: Navigate menus and control games (mapped to analog values in code).
64-
- **RESET**: Return to menu or restart games.
69+
## 🙌 Credits
70+
- Chrome Dino sprite inspiration: **CREA ELECTRONICA** / **Max Imagination** (two-cell T-Rex look).
71+
- Thanks to the Arduino community for the classic LCD Keypad Shield patterns and LiquidCrystal library examples.
6572

66-
## Credits
73+
---
6774

68-
- Chrome Dino Game by CREA ELECTRONICA, revised by
75+
Made with ♥ on an Uno, tiny RAM, and lots of sprites.

0 commit comments

Comments
 (0)