You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**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))
13
17
-**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))
14
18
-**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))
15
19
-**Eye Animation**: Fun idle animation ([UI/EyeAnimation.ino](UI/EyeAnimation.ino))
16
20
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.
18
33
19
-
- Arduino Uno (or compatible)
20
-
- 16x2 LCD Keypad Shield (DFRobot or similar)
21
-
- (Optional) Passive buzzer for sound effects (some games)
0 commit comments