
Auf dem 7-Segment-Display soll ein Würfelspiel für zwei Spieler*innen realisiert werden. Nach einem Druck auf den Taster wird eine Zahl zwischen 1 und 6 gewürfelt. Auf dem Display wird die Reihenfolge der Spieler*innen angezeigt, die gewürfelte Zahl und die Summe der bisherigen Würfe. Zum Schluss wird die siegreiche Spielerin/der siegreiche Spieler angezeigt.
So sieht es aus:
So sieht die Anzeige aus:
erste Spielerin erster Spieler | Punktestand | zweite Spielerin zweiter Spieler | Punktestand | Anzeige der Siegerin des Siegers | Summe | |
---|---|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |

Das 7- Segment Display TM1637 hat 4 Stellen mit je 7 Segmenten wobei nach 2 Stellen ein Doppelpunkt dargestellt werden kann. Somit ergibt sich eine Anzeige von Zahlenwerten von 0000 bis 9999.
Die Anschlüsse:
CLK → beliebiger digitaler Pin
DIO → beliebiger digitaler Pin
VCC → 5 V
GND → Ground
Als Erstes musst du die Bibliothek TM1637 installieren.
Arduino IDE 1.8x:
Sketch → Bibliothek einbinden → Bibliotheken verwalten

Arduino IDE 2.x:

Methoden der Bibliothek TM1637
Methode | Parameter |
---|---|
setBrightness(int) | 0-15 → Helligkeit des Displays setzen |
clear() | Anzeige löschen |
showNumberDec(int, bool, int, int) | int → Zahl, die angezeigt wird false/true → führende 0 verbergen/anzeigen int → Position 1-4 (1 → links, 4 → rechts) int → Position der niederwertigsten Ziffer 0 → ganz links, 3 → rechts, die beiden letzten Parameter sind optional, werden sie weggelassen, erfolgt die Anzeige ganz rechts |
showNumberDecEx(int, int, bool, int, int) | int → Zahl, die angezeigt wird int → 64 → Doppelpunkt anzeigen oder hexadezimal 0×40 false/true → führende 0 verbergen/anzeigen int → Position 1-4 (1 → links, 4 → rechts) int → Position der niederwertigsten Ziffer 0 → ganz links, 3 → rechts die beiden letzten Parameter sind optional, werden sie weggelassen, erfolgt die Anzeige ganz rechts |
setSegments(Daten_Array) | zeigt das unter Daten_Array definierte Array an |
Benötigte Bauteile:
- Taster
- 7-Segment-Anzeige TM1637
- Leitungsdrähte
Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)

Jedes der vier Zeichen besteht aus 7 Segmenten. Damit können alle Ziffern und auch einige Buchstaben dargestellt werden.
Die Buchstaben müssen in einem 7- Segment Display ➨Array dargestellt werden:
Beispiel:
// Array für StoP
const byte STOP[] =
{
SEG_A | SEG_F | SEG_G | SEG_C | SEG_D, // S
SEG_F | SEG_E | SEG_G | SEG_D, // t
SEG_E | SEG_G | SEG_C | SEG_D, // o
SEG_E | SEG_F | SEG_A | SEG_B | SEG_G, // P
};

Auf Tasterdruck startet ein Countdown von 10 bis 0. Am Ende zeigt das Display „StoP“:
So sieht es aus:
Der dazugehörige Quelltext:
// Bibliothek einbinden
# include <TM1637Display.h>
// Pins für das Display definieren
int CLK = 2;
int DIO = 3;
// Pin für den Taster
int TASTER = 7;
// Name und Pins für das Display festlegen
TM1637Display Anzeige(CLK, DIO);
// Array für die Anzeige LOS
const byte LOS[] =
{ SEG_F | SEG_E | SEG_D, // L
SEG_A | SEG_F | SEG_E | SEG_D | SEG_C | SEG_B, // O
SEG_A | SEG_F | SEG_G | SEG_C | SEG_D, // S
0 | 0 | 0 | 0 | 0 | 0 | 0, // leer
};
// Array für die Anzeige StoP
const byte STOP[] =
{
SEG_A | SEG_F | SEG_G | SEG_C | SEG_D, // S
SEG_F | SEG_E | SEG_G | SEG_D, // t
SEG_E | SEG_G | SEG_C | SEG_D, // o
SEG_E | SEG_F | SEG_A | SEG_B | SEG_G, // P
};
void setup()
{
pinMode(TASTER, INPUT_PULLUP);
// Anzeige löschen
Anzeige.clear();
// Helligkeit des Displays setzen (1-15)
Anzeige.setBrightness(2);
// LOS anzeigen
Anzeige.setSegments(LOS);
}
void loop()
{
int Tasterlesen = digitalRead(TASTER);
if (Tasterlesen == LOW)
{
Anzeige.clear();
for (int i = 10; i >= 0; i--)
{
Anzeige.showNumberDec(i, false, 4, 0);
delay(1000);
}
Anzeige.setSegments(STOP);
delay(3000);
}
Anzeige.setSegments(LOS);
}
Der Kopf für das Spiel muss mit den Arrays für die Meldungen ergänzt werden:
# include <TM1637Display.h>
int CLK = 2;
int DIO = 3;
int TASTER = 7;
// Array für SP-1
byte SPIELER1[] =
{
SEG_A | SEG_F | SEG_G | SEG_C | SEG_D, // S
SEG_E | SEG_F | SEG_A | SEG_B | SEG_G, // P
SEG_G, // -
SEG_B | SEG_C, // 1
};
// Array für SP-2
const byte SPIELER2[] =
{
SEG_A | SEG_F | SEG_G | SEG_C | SEG_D, // S
SEG_E | SEG_F | SEG_A | SEG_B | SEG_G, // P
SEG_G, // -
SEG_A | SEG_B | SEG_G | SEG_E | SEG_D, // 2
};
// Array für SIEG
byte SIEG[] =
{
SEG_A | SEG_F | SEG_G | SEG_C | SEG_D, // S
SEG_B | SEG_C, // I
SEG_A | SEG_F | SEG_G | SEG_E | SEG_D, // E
SEG_A | SEG_F | SEG_E | SEG_D | SEG_C | SEG_G, // G
};
// Array für UNENTSCHIEDEN
byte UNENTSCHIEDEN[] =
{
SEG_G | SEG_D, // =
};
// Array für alle Segmente löschen
byte AnzeigeLoeschen[] = { 0, 0, 0, 0 };
// Definition Display
TM1637Display Anzeige(CLK, DIO);
// Summe der Augen der beiden Spieler
int SummeSpieler1;
int SummeSpieler2;
// Anzahl der Runden, Start mit 1
int Runde = 1;
int Zahl;
int TasterStatus;
// Reihenfolge der Spieler festlegen, Spieler1 startet
bool StartSpieler1 = true;
bool StartSpieler2 = false;
Im setup-Teil wird zusätzlich der ➨Zufallsgenerator gestartet.
void setup()
{
pinMode(TASTER, INPUT_PULLUP);
// Anzeige.clear();
Anzeige.setSegments(AnzeigeLoeschen);
// Helligkeit setzen(0-15)
Anzeige.setBrightness(2);
Anzeige.setSegments(SPIELER1);
// Zufallsgenerator starten
randomSeed(analogRead(0));
}
Der loop-Teil. Beachte die Kommentare.
void loop()
{
// Minimum und Maximum der Würfelaugen
int Minimum = 1;
int Maximum = 7;
// 6 Runden spielen
while (Runde < 7)
{
// Spieler 1 ist an der Reihe StartSpieler1 → true
if (StartSpieler1)
{
TasterStatus = digitalRead(TASTER);
if (TasterStatus == LOW)
{
// Wechsel → Spieler2 ist an der Reihe
StartSpieler1 = !StartSpieler1;
StartSpieler2 = !StartSpieler2;
delay(200);
Anzeige.setBrightness(2);
Anzeige.clear();
// Aufruf der Funktion ZufallsZahl
SummeSpieler1 = SummeSpieler1 + ZufallsZahl(Minimum, Maximum);
/*
Punkte anzeigen
showNumberDecEx(Zahl, Doppelpunkt anzeigen
(64 oder hexadezimal 0x40),
false/true(führende 0 verbergen/anzeigen),
Position (1-4), 0 (rechtsbündig))
*/
Anzeige.showNumberDecEx(SummeSpieler2, 64, true, 4, 0);
Anzeige.showNumberDecEx(SummeSpieler1, 64, true, 2, 0);
delay(2000);
Anzeige.setSegments(SPIELER2);
}
}
// Spieler 2 ist an der Reihe StartSpieler2 → true
if (StartSpieler2)
{
TasterStatus = digitalRead(TASTER);
if (TasterStatus == LOW)
{
// Wechsel → Spieler1 ist an der Reihe
StartSpieler1 = !StartSpieler1;
StartSpieler2 = !StartSpieler2;
delay(200);
Anzeige.setBrightness(2);
Anzeige.clear();
// Aufruf der Funktion ZufallsZahl
SummeSpieler2 = SummeSpieler2 + ZufallsZahl(Minimum, Maximum);
Anzeige.showNumberDecEx(SummeSpieler2, 64, true, 4, 0);
Anzeige.showNumberDecEx(SummeSpieler1, 64, true, 2, 0);
delay(2000);
Anzeige.setSegments(SPIELER1);
// nur bei Spieler2 Runde hochzählen, Spieler1 hat angefangen
Runde ++;
}
}
}
// unentschieden
if (SummeSpieler1 == SummeSpieler2)
{
Anzeige.clear();
Anzeige.setSegments(UNENTSCHIEDEN, 1 , 2);
delay(2000);
Anzeige.setSegments(SPIELER1);
// alle Werte zurücksetzen
Runde = 1;
SummeSpieler1 = 0;
SummeSpieler2 = 0;
}
// Sieger Spieler1
if (SummeSpieler1 > SummeSpieler2)
{
Anzeige.setSegments(SIEG);
delay(2000);
Anzeige.setSegments(SPIELER1);
delay(2000);
Anzeige.showNumberDec(SummeSpieler1, false);
delay(2000);
Anzeige.setSegments(SPIELER1);
// alle Werte zurücksetzen
Runde = 1;
SummeSpieler1 = 0;
SummeSpieler2 = 0;
}
// Sieger Spieler2
if (SummeSpieler1 < SummeSpieler2)
{
Anzeige.setSegments(SIEG);
delay(2000);
Anzeige.setSegments(SPIELER2);
delay(2000);
Anzeige.showNumberDec(SummeSpieler2, false);
delay(2000);
Anzeige.setSegments(SPIELER1);
// alle Werte zurücksetzen
Runde = 1;
SummeSpieler1 = 0;
SummeSpieler2 = 0;
}
}
Jetzt fehlt nur noch die ➨Funktion ZufallsZahl.
int ZufallsZahl(int Minimum, int Maximum)
{
int Zahl = random(Minimum, Maximum);
return Zahl;
}
Würfelspiel Serieller Monitor
Verwandte Aufgaben:
- Countdown mit einer einstelligen 7-Segment-Anzeige
- Countdown mit einem OLED-Display
- Farbenspiele mit einer RGB-Matrix
- Labyrinth-Spiel mit TFT und Fernbedienung
- Labyrinthspiel mit Joystick und TFT
- Länder-Info
- LED-Matrix - Countdown
- LED-Matrix - Joystick-Spiel
- LED-Matrix - Lauflicht
- LED-Matrix - Würfeln
- Lottozahlen - Anzeige auf einem LCD
- Lottozahlen - Anzeige auf einem OLED-Display
- Multiplikations-Taschenrechner
- Spiel mit einer RGB-Matrix
- Taschenrechner Grundrechenarten
- Würfeln einstellige 7-Segment-Anzeige und Fernbedienung
- Würfeln - Anzeige auf einem OLED-Display
- Würfeln mit einer einstelligen Anzeige
Letzte Aktualisierung: