Was schenkt man einem Nerd, der eigentlich schon alles hat? Socken? Ein technisches Gadget von der Stange? Langweilig. Die Antwort lautet: Eigensinn. Etwas mit Herzblut, Code und einem Hauch von 80er-Jahre-Nostalgie. Die Idee: Eine Arcade-Box auf Basis des Arduino Uno R4 Minima. Aber nicht nur zum Spielen, sie ist Wetterstation, Uhr, Stoppuhr und Taschenrechner in einem. Und das Beste? Finde den "Smiley".
Das Projekt: Hardware trifft Nostalgie
Das Herzstück ist ein großes ILI9486 TFT-Display, das von einem Arduino Uno R4 Minima befeuert wird. Für die richtige Stimmung sorgt ein NeoPixel-Ring, der je nach Modus in verschiedenen Farben und Effekten leuchtet. Ein DHT22-Sensor misst im Hintergrund die Raumtemperatur und Luftfeuchtigkeit, während die interne RTC (Real Time Clock) dafür sorgt, dass die Zeit niemals stillsteht.
10 Spiele in einer Hand
Damit keine Langeweile aufkommt, sind direkt zehn Klassiker und Eigenentwicklungen an Bord:
- Vier Gewinnt, Master Desaster, Slot Maschine
- The Dino Game, Millis Game, Zahlen raten
- Klick Fit, Würfel, Simon Sagt & Breakout
Intelligent durchdacht: Test & Uhrzeit
Beim Hochfahren gibt es den ersten Clou: Hältst du beim Einschalten eine der Tasten gedrückt, landest du im Hardware-Systemtest. Hier kannst du die LEDs und den Buzzer testen oder die Uhrzeit der RTC direkt über das Encoderrad neu stellen.
Mehr als nur Gaming
Wenn du die Box 7 Sekunden lang nicht anrührst, schaltet sie automatisch in den Uhrzeit Modus.
- Die Analog-Uhr: Eine elegante Anzeige der Uhrzeit, verschoben nach rechts, um Platz für Infos zu schaffen.
- Wetterstation: Oben links siehst du live die Temperatur und Luftfeuchtigkeit deines Zimmers.
- Der Geist & der Smiley: Kleine grafische Details, die das UI lebendig machen. Per Knopfdruck lässt sich zudem ein "Smiley Boost" aktivieren. weil gute Laune eben auch programmierbar ist.
Das Gehirn der Box: Der Master-Code
Damit bei so vielen Funktionen nicht alles im Chaos versinkt, nutzt das Projekt das Prinzip der Registerkarten (Tabs) in der Arduino IDE. Anstatt tausende Zeilen Code in einer Datei zu haben, ist jedes Spiel und jede Funktion in einem eigenen Tab untergebracht. Das macht den Code extrem übersichtlich und leicht erweiterbar.
Hier sind die vier wichtigsten Stellen aus dem Hauptprogramm (master.ino):
| Name | Stelle (ca.) | Erklärung |
| Interrupt-Encoder | void readEncoder() | Verarbeitet die Drehbewegungen des Encoders im Hintergrund. So reagiert das Menü immer flüssig, egal was gerade berechnet wird. |
| LED-Handler | void handleLeds() | Steuert die NeoPixel-Animatione mit millis() statt delay(). Das verhindert, dass das Programm "einfriert". |
| AnalogClock UI | showAnalogClock() | Die Schaltzentrale im Ruhezustand. Hier werden RTC-Zeit, DHT22-Sensordaten und Grafik-Elemente zu einem Dashboard kombiniert. |
| Game-Dispatcher | void startGame() | Die Weiche des Programms. Sie räumt den Speicher auf und springt sauber in das gewählte Spiel-Modul. |
Der Arduino Code für die arcarde Box, den vollständigen findest du hier https://github.com/kreativekiste
Die Verdrahtung
Die Verdrahtung des ARCADE automat V1.73 ist durch die Vielzahl an Komponenten (Display, Encoder, Buttons, Sensor, LEDs, Buzzer) durchaus anspruchsvoll und es Schraubklemmen (arduino screw shield) verwendet werden. Das Herzstück ist der Arduino Uno R4 Minima. Um den Schaltplan übersichtlich zu halten, habe ich VCC (Stromversorgung) und GND (Masse) für die einzelnen Komponenten nicht eingezeichnet. Diese müssen aber natürlich angeschlossen werden.
Pin-Belegungstabelle (Arduino Uno R4 Minima)
| Komponente | Funktion / Pin-Name | Arduino Pin | Anmerkung |
| TFT Display | CS (Chip Select) | 10 | SPI Verbindung |
| (ILI9486) | DC (Data/Command) | 8 | SPI Verbindung |
| RST (Reset) | 9 | SPI Verbindung | |
| SDI (MOSI) | 11 | SPI Standard | |
| SCK (Clock) | 13 | SPI Standard | |
| Rotary Encoder | Phase A (CLK) | 2 | Interrupt Pin! |
| (Drehknopf) | Phase B (DT) | 3 | Interrupt Pin! |
| Button (SW) | 4 | Taster-Funktion | |
| Arcade-Buttons | T1 (START/Calc) | A1 | Interner Pull-Up |
| T2 (Setup) | A2 | Interner Pull-Up | |
| T3 (Smiley Boost) | A3 | Interner Pull-Up | |
| T4 (MENU/Exit) | A4 | Interner Pull-Up | |
| Sensoren/Aktoren | DHT22 (Temp/Hum) | 7 | Data Pin |
| NeoPixel Ring | 5 | Data Pin (16 LEDs) | |
| Piezo-Buzzer | 6 | PWM Sound Output | |
| Random Seed | A0 | Rauschen | |
| VRTC (Uhr) | Batterie (+) | VRTC (nur wifi) | Für die interne RTC |
Vorlage für den Lasercutter
Wichtiger Hinweis zur Uhrzeit (RTC)
Ein spezieller Punkt beim Arduino Uno R4 Minima ist die Zeitmessung. Im Gegensatz zum großen Bruder, dem R4 WiFi, besitzt der Minima keinen dedizierten VRTC-Anschluss, um die interne Uhr bei Stromausfall über eine Batterie zu puffern. Beim Minima ist der entsprechende Pin intern fest an 5V verdrahtet. Das bedeutet: Wird der Arduino komplett vom Strom getrennt, "vergisst" er die Uhrzeit.
Wer die Box häufiger ausschaltet und die Zeit behalten möchte, hat zwei Optionen:
- Upgrade auf R4 WiFi: Dieser bietet einen echten VRTC-Pin für eine Pufferbatterie.
- Externes RTC-Modul: Solltest du die Arcade-Box als deine "primäre" Zimmeruhr verwenden wollen, empfehle ich ein separates RTC-Modul (z. B. DS3231). Die interne RTC der gesamten R4-Serie ist ein tolles Feature, aber nicht extrem präzise in der Langzeitanwendungen.
Für den Spielspaß und die Wetterstation in dieser Box reicht die interne Lösung des R4 aber meistens völlig aus!
Ein ehrliches Wort zur Software
Ich werde oft gefragt, wie ich die Zeit finde, solche komplexen Programme zu schreiben. In diesem Fall ist die Wahrheit einfach. Ich habe das Projekt begonnen aber schnell gemerkt das ich 3 Jahre und ganz ganz viel Nerven benötigen würde. Klar wäre ich ans Ziel gekommen..... irgendwann, 10 Spiele, Sensoren, RTC, Menüsystem. Ich bin Maker aus Leidenschaft für Hardware und Software aber kein Vollzeit Full-Stack-Entwickler.
Deshalb habe ich mich bei diesem Projekt entschieden einen neuen Weg zu gehen, vor allem auch Interesse, wie und ob das geht. Pair-Programming mit Künstlicher Intelligenz.
Der gesamte Code der Arcade-Box ist in einem intensiven, tagelangen Dialog mit Gemini AI entstanden. Ich habe die Logik vorgegeben, die Hardware verdrahtet und die Fehler im Gameplay aufgespürt, auch Änderungen im Code geschrieben und die KI hat mir geholfen, diese Ideen und meinen Code in absolut sauberen C++ Code zu übersetzen.
Für mich ist das kein "Schummeln", sondern die Nutzung eines extrem mächtigen Werkzeugs. ABER mir war es wichtig drauf klar und deutlich hin zu weisen. Es hat mir ermöglicht, ein Projekt in meiner eh schon knappen Zeit zu realisieren, für das ich allein vermutlich Monate gebraucht hätte, also ein Dank an dieser stelle an Gemini AI :-).... auch wenn du diesen Dank nicht fühlen kannst ;-)).










