In diesem Projekt bringen wir das klassische Tetris-Spiel auf einen ESP8266 Mikrocontroller mit einem integrierten OLED-Display. Der Code steuert die Spiel-Logik und die Darstellung auf dem Display, wobei die Blöcke in Echtzeit bewegt und gedreht werden können. Dieser Aufbau ist ideal für Einsteiger und Fortgeschrittene, die Mikrocontroller, Display-Programmierung und einfache Spieleentwicklung mit Arduino und ESP8266 kennenlernen möchten.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Projektüberblick
- Ziel: Ein Tetris-Spiel mit visueller Anzeige und Steuerung über die Tasten.
- Hardware: ESP8266 mit integriertem OLED-Display und GPIOs für die Tastersteuerung.
- Software: Arduino IDE, Adafruit GFX und SSD1306 Bibliotheken für Display-Ansteuerung.
Benötigte Komponenten
- ESP8266 Mikrocontroller (mit integriertem OLED-Display, z.B. Wemos D1 Mini Pro mit OLED Shield)
- 4 Taster für die Steuerung (links, rechts, drehen, schnelles Fallen)
- Kabel und Breadboard für die Verbindungen
Schaltplan und Verbindungen
-
Taster-Belegung am ESP8266:
- Links: Verbinden Sie den ersten Taster mit GPIO12 (D6).
- Rechts: Verbinden Sie den zweiten Taster mit GPIO14 (D5).
- Drehen: Verbinden Sie den dritten Taster mit GPIO0 (D3).
- Schnelles Fallen: Verbinden Sie den vierten Taster mit GPIO2 (D4).
-
Stromversorgung:
- Der ESP8266 benötigt eine Versorgungsspannung von 3,3V und kann per USB-Kabel angeschlossen werden.
-
OLED-Display:
- Das OLED-Display ist bereits auf dem ESP8266 Shield montiert und über die I2C-Schnittstelle mit dem Mikrocontroller verbunden.
Schritt-für-Schritt-Anleitung
-
Installieren der Arduino IDE und Bibliotheken:
- Laden Sie die Arduino IDE herunter und installieren Sie die ESP8266 Board-Unterstützung.
- Gehen Sie zu Sketch -> Include Library -> Manage Libraries und installieren Sie:
- Adafruit SSD1306
- Adafruit GFX
-
Einrichten des ESP8266 in der Arduino IDE:
- Fügen Sie die ESP8266 Board-URL in den Voreinstellungen hinzu (
http://arduino.esp8266.com/stable/package_esp8266com_index.json
). - Wählen Sie in der Board-Auswahl Ihren ESP8266 aus.
- Fügen Sie die ESP8266 Board-URL in den Voreinstellungen hinzu (
-
Code für das Tetris-Spiel laden und anpassen:
- Laden Sie den folgenden Code in die Arduino IDE und passen Sie, falls nötig, die GPIO-Einstellungen für die Tasten an. Dieser Code verwendet die Adafruit-Bibliotheken, um Blöcke und das Spielfeld zu zeichnen und Eingaben zu verarbeiten.
- Die Blöcke fallen automatisch, und Spieler können sie durch Eingaben rotieren, nach links und rechts bewegen oder schneller fallen lassen.
-
Code-Übersicht und Funktionsweise:
- Setup-Bereich:
- Initialisiert das Display und startet die I2C-Kommunikation mit dem OLED.
- Loop-Bereich:
- Menü und Spielstatus: Vor dem Spielstart wird ein Menü angezeigt, danach steuert die Schleife die Blöcke und Spielfeld-Darstellung.
- Spiel-Logik: Der Code prüft Bewegungen, Kollisionen und rotierende Blöcke und verankert sie bei Bedarf im Spielfeld.
- Display-Darstellung:
- Blöcke und das Spielfeld werden mithilfe von
display.drawRect()
unddisplay.fillRect()
gezeichnet.
- Blöcke und das Spielfeld werden mithilfe von
- Spielsteuerung:
- Über die GPIOs werden die Tastereingaben verarbeitet, um das Tetris-Spiel interaktiv zu gestalten.
- Setup-Bereich:
-
Upload des Codes:
- Verbinden Sie das ESP8266-Board mit Ihrem Computer und wählen Sie den richtigen Port in der Arduino IDE aus.
- Laden Sie den Code auf das ESP8266 hoch. Nach dem Upload sollte auf dem OLED das Tetris-Menü erscheinen.
Code-Besprechung
Der Code ist in mehrere logische Abschnitte unterteilt:
-
Spielstart und Menü:
- Zeigt das Menü auf dem Display an und wartet auf eine Eingabe zum Starten des Spiels.
-
Spielfeld-Darstellung:
- Das Spielfeld wird als Matrix dargestellt, wobei die Blöcke auf dem Display angezeigt und in ihrem Status aktualisiert werden.
-
Block-Formen und Rotationen:
- Jede Blockform ist als 4x4-Matrix codiert. Verschiedene Rotationen der Formen werden mit Bit-Manipulationen angezeigt und auf gültige Positionen überprüft.
-
Automatische Bewegung und Tastensteuerung:
- Blöcke fallen automatisch, und der Spieler kann sie durch die Tasten rotieren oder bewegen.
-
Spielende:
- Wenn ein Block nicht platziert werden kann, wird das Spiel beendet und ein „Game Over“-Bildschirm angezeigt.
Beispielcode für den Upload
Dieser Code kann als Basis verwendet und an Ihre Bedürfnisse angepasst werden:
#include <Wire.h> #define SCREEN_WIDTH 128 // Spielfeld und Blöcke const int shapes[7][4] = { int currentShape = 0; unsigned long lastFallTime = 0; bool gameStarted = false; void setup() { void loop() { |
code mit meine menü :
#include <Wire.h> #define SCREEN_WIDTH 128 // Spielfeld und Blöcke // Tetrimino Formen int currentShape = 0; // Timing für automatisches Fallen bool gameStarted = false; // Status, ob das Spiel gestartet ist void setup() { void loop() { // Eingaben verarbeiten // Zeichnet das Startmenü // Zeichnet den Game Over-Bildschirm // Der Rest des Codes bleibt gleich... // Rahmen zeichnen void drawField() { void drawShape() { void moveShapeRight() { void moveShapeLeft() { void moveShapeDown() { void moveShapeUp() { void rotateShape() { bool checkValidMove(int newX, int newY) { void mergeShape() { void spawnNewShape() { void resetGame() { // Eingabeverarbeitung // Eingabeverarbeitung für das Menü // Eingabeverarbeitung für den Game Over-Bildschirm |
Mit dieser Anleitung und dem Beispielcode sollten Sie ein funktionierendes Tetris-Spiel auf Ihrem ESP8266 mit OLED-Display erstellen können!