|
Pong-Simulation mit ESP32 und kleinem OLED Display
Ziel: Ein ESP32-Board simuliert auf dem
kleinen 0,96 Zoll OLED Display das Spiel 'Pong'.
Ich nenne dieses Eperiment 'Pong-Simulation', weil es kein vollständiges Pong-Spiel
ist. Für ein vollständiges Pong müssten noch zwei Potis oder zwei Joysticks hinzugefügt werden,
die ich jetzt nicht vorliegen habe.
Anschluss:
Pin am Display |
Pin am ESP32-Board |
Farbe im Bild |
GND | GND | grün |
Vcc | 3V3 | rot |
SCL | GPIO 22 | blau |
SDA | GPIO 21 | gelb |
| |
Quelltext:
/*
Programm "Pong-Simulation"
OLED Display 128x64 mit Treiberchip SSD1306 und I2C-Bus
am AZDelivery ESP32 WROOM Board
folgende Bibliotheken werden verwendet:
Adafruit_BusIO hier: https://github.com/adafruit/Adafruit_BusIO
Adafruit_SSD1306 hier: https://github.com/adafruit/Adafruit_SSD1306
Adafruit_GFX_Library hier: https://github.com/adafruit/Adafruit-GFX-Library
Lade sie herunter, entpacke sie, lege sie in Deinen
libraries-Ordner und starte Deine Arduino-IDE neu!
Anschlüsse:
OLED | ESP32-Board
---------------------
GND | GND
VCC | 3.3V
SCL | G22 (=SCL)
SDA | G21 (=SDA)
*/
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // Instanziierung
// globale Variablen
int x = 20, y = 40, d = 5;
boolean nachrechts = true, nachunten = true;
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.display(); // zeigt den Grafikpuffer auf dem OLED-Display
}
void loop() {
display.clearDisplay();
display.drawLine(0, 0, 128, 0, WHITE); // oberer Rand
display.drawLine(0, 63, 128, 63, WHITE); // unterer Rand
if (x > 120) {nachrechts = false;}
if (x < 8) {nachrechts = true; }
if (nachrechts) {x++;} else {x--;}
if (y > 55) nachunten = false;
if (y < 8) nachunten = true;
if (nachunten) {y++;} else {y--;}
display.fillCircle(x, y, d, WHITE); // Ball
display.drawLine(127, y-5, 127, y+5, WHITE); // linker Schläger
display.drawLine(0, y-5, 0, y+5, WHITE); // rechter Schläger
display.display();
delay(10);
}
Einkaufsliste:
|