

Bei einem Würfelspiel für zwei Spieler*innen soll die gewürfelte Zahl, die Gesamtsumme und nach sechs Runden das Ergebnis des Spiels (Sieg oder Unentschieden) als Sprache ausgegeben werden.

Mit einem mp3-Shield können mp3-Dateien abgespielt werden.
Du benötigst eine Micro-SD-Karte, die mit FAT32 formatiert wurde.
Die Sprachdateien wurden mit der Webseite 🔗https://ttsmp3.com (abgerufen am 02.10.25) erstellt.
Du findest sie ⇒hier.
Beispiele:
Benötigte Bauteile:
- 2 Taster
- mp3-Shield
- Leitungsdrähte
Baue die Schaltung auf.
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Benötigte Bibliotheken:
![]() | ![]() | ![]() |
Binde die benötigten Bibliotheken ein und definiere die Variablen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include “vs1053_SdFat.h” #include “Bounce2.h” // Name der SD-Karte SdFat sd; // Name des MP3-Shields vs1053 MP3player; // die Taster int TASTER1 = 6; int TASTER2 = 7; // “Prellverhinderer” für die Tasten starten Bounce Taste_Spieler1 = Bounce(); Bounce Taste_Spieler2 = Bounce(); // Summe der Augen der beiden Spieler int SummeSpieler1; int SummeSpieler2; // Anzahl der Runden, Start mit 1 int Runde = 1; int Zahl; // Reihenfolge der Spieler festlegen, Spieler1 startet bool StartSpieler1 = true; bool StartSpieler2 = false; |
Der setup-Teil. Beachte die Kommentare.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | void setup() { pinMode(TASTER1, INPUT_PULLUP); pinMode(TASTER2, INPUT_PULLUP); // Instanzen des Objekts Bounce für jede Taste zuordnen // Zeitintervall einstellen Taste_Spieler1.attach(TASTER1); Taste_Spieler1.interval(20); Taste_Spieler2.attach(TASTER2); Taste_Spieler2.interval(20); // SD Karte lesen sd.begin(SD_SEL, SPI_FULL_SPEED); // in das Wurzelverzeichnis wechseln sd.chdir(“/”); // Player starten MP3player.begin(); // Lautstärke setzen MP3player.setVolume(15, 15); // Zufallsgenerator starten randomSeed(analogRead(A0)); Serial.begin(9600); } |
Der loop-Teil. Beachte die Kommentare.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | void loop() { // Zufallszahlen 1–6 // solange die Sprachausgabe läuft -> Taster nicht erneut drücken int Minimum = 1; int Maximum = 7; // 5 Durchgänge while (Runde < 6) { // StartSpieler1 = true -> Spieler 1 if (StartSpieler1) { if (Taste_Spieler1.update()) { if (Taste_Spieler1.read() == LOW) { Serial.println(“Runde ” + String(Runde)); Serial.println(“—————————–”); // kurzes “Beep” spielen delay(1000); MP3player.SendSingleMIDInote(); // würfeln int Zahl = random(Minimum, Maximum); // Spielstand Serieller Monitor Serial.println(“Spieler 1: gewuerfelte Zahl ” + String(Zahl)); delay(1000); /* Sprachausgabe gewürfelte Zahl 211 -> Spieler 1 Track(1) … Track(6) Zahlen von 1 bis 6 /* nach jeder Sprachausgabe ausreichend Zeit lassen Datei muss geladen und abgespielt werden */ MP3player.playTrack(211); delay(2000); MP3player.playTrack(Zahl); // Summe berechnen und ausgeben SummeSpieler1 = SummeSpieler1 + Zahl; Serial.println(“Spieler 1: Summe: ” + String(SummeSpieler1)); Serial.println(“—————————–”); delay(2000); // Sprachausgabe: Summe ausgeben // 101 … 130 Zahlen von 1 bis 30 MP3player.playTrack(100 + SummeSpieler1); delay(2000); // Wechsel -> Spieler2 ist an der Reihe StartSpieler1 = !StartSpieler1; StartSpieler2 = !StartSpieler2; } } } // StartSpieler2 = true -> Spieler 2 if (StartSpieler2) { if (Taste_Spieler2.update()) { if (Taste_Spieler2.read() == LOW) { delay(1000); MP3player.SendSingleMIDInote(); int Zahl = random(Minimum, Maximum); Serial.println(“Spieler 2: gewuerfelte Zahl ” + String(Zahl)); delay(1000); MP3player.playTrack(212); delay(2000); MP3player.playTrack(Zahl); SummeSpieler2 = SummeSpieler2 + Zahl; Serial.println(“Spieler 2: Summe: ” + String(SummeSpieler2)); Serial.println(“—————————–”); delay(2000); // Summe ausgeben MP3player.playTrack(100 + SummeSpieler2); /* ausreichend Zeit lassen Datei muss geladen und abgespielt werden */ delay(2000); // nur bei Spieler2 Runde hochzählen, // Spieler1 hat angefangen Runde ++; // Wechsel -> Spieler1 ist an der Reihe StartSpieler1 = !StartSpieler1; StartSpieler2 = !StartSpieler2; } } } } // unentschieden if (SummeSpieler1 == SummeSpieler2) { Serial.println(“unentschieden”); Serial.println(“—————————–”); MP3player.playTrack(200); delay(2000); // alle Werte zurücksetzen Runde = 1; SummeSpieler1 = 0; SummeSpieler2 = 0; } // Sieger Spieler1 if (SummeSpieler1 > SummeSpieler2) { Serial.println(“Sieger Spieler 1”); Serial.println(“—————————–”); MP3player.playTrack(201); delay(2000); // alle Werte zurücksetzen Runde = 1; SummeSpieler1 = 0; SummeSpieler2 = 0; } // Sieger Spieler2 if (SummeSpieler1 < SummeSpieler2) { Serial.println(“Sieger Spieler 2”); Serial.println(“—————————–”); MP3player.playTrack(202); delay(2000); // alle Werte zurücksetzen Runde = 1; SummeSpieler1 = 0; SummeSpieler2 = 0; } } |
Verwandte Anleitungen:
Letzte Aktualisierung:









