In diesem Tutorial lernst du, wie du ein „Spin the Wheel“-Spiel mit LEDs, einem Summer und einem Arduino baust. Spin the Wheel game Es ist ein unterhaltsames und interaktives Spiel, das für verschiedene Zwecke genutzt werden kann, z. B. um zu entscheiden, wer in einem Spiel zuerst dran ist, einen zufälligen Gewinner für einen Preis auszuwählen oder einfach zur Unterhaltung.
Traditionell besteht es aus einem großen mechanischen Rad, das in farbige Segmente unterteilt ist. Jedes Segment ist mit einer Zahl oder einem Preis markiert, und die Segmente können unterschiedliche Größen haben, was die Wahrscheinlichkeit anzeigt, auf ihnen zu landen. Das Rad ist vertikal montiert, sodass es sich frei drehen kann, wenn ein Spieler es entweder von Hand dreht oder an einem Hebel zieht, der daran befestigt ist.

Spieler setzen typischerweise darauf, wo das Rad stehen bleibt. Nachdem sie ihre Einsätze auf einem nummerierten oder farbigen Bereich eines statischen Brettes platziert haben, der den Segmenten des Rades entspricht, dreht der Spielleiter oder ein Spieler das Rad. Wenn das Rad stoppt, zeigt ein Zeiger oben das gewinnende Segment an.
Hier bauen wir eine kleine elektronische Version des Spiels, die einen LED-Ring verwendet, um ein Gewinnsegment hervorzuheben, anstatt eines mechanisch drehenden Rades. Zusätzlich fügen wir einen Summer für Soundeffekte hinzu, wie das Klicken des drehenden Rades und die Signalisierung eines Gewinns.

In diesem Tutorial lernst du, wie du einen Taster ausliest, LEDs und einen Summer mit einem Arduino steuerst. Außerdem lernst du, wie du mit LEDs einen Dreh-Effekt erzeugst, um die Bewegung eines Rades zu simulieren.
Also, legen wir los und erstellen dein eigenes Spin the Wheel-Spiel mit Arduino!
Benötigte Teile
Unten findest du die für dieses Projekt benötigten Teile. Wenn du bereits einen Widerstands-Satz und acht LEDs hast, brauchst du das vorgeschlagene Kit nicht. Du kannst das Projekt zuerst auf einem Breadboard aufbauen, aber das ist nicht nötig, wenn du ein echtes Rad bauen und die LEDs direkt verdrahten möchtest. Dafür ist das Kabelset mit Clips sehr praktisch.

Arduino Uno

Dupont-Kabelset

Kabelset mit Clips

Breadboard

Passiver Summer

Taster-Set

Widerstands- & LED-Kit
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Spin the Wheel
In diesem Abschnitt zeige ich dir, wie du die Teile verbindest und den Code für das Spin the Wheel-Spiel schreibst. Um die Verdrahtung und den Code einfach zu halten, verwende ich nur vier LEDs, während das oben gezeigte Rad acht hat. Die Verdrahtung und der Code lassen sich aber leicht auf mehr LEDs erweitern.
Verdrahtung
Das folgende Bild zeigt die Verdrahtung des Spin the Wheel-Spiels mit vier LEDs. Wenn du möchtest, kannst du die restlichen Pins (6,7,8,9) nutzen, um auf acht LEDs zu erweitern.
Beginnen wir mit dem Anschluss der LEDs. Da immer nur eine LED gleichzeitig leuchtet, benötigen wir nur einen Strombegrenzungswiderstand von 220 Ohm zwischen dem GND-Pin des Arduino und allen Kathoden (kurze Pins) der vier LEDs. Du kannst auch mehrere LEDs gleichzeitig einschalten (ohne deinen Arduino zu beschädigen), aber die LEDs werden dann dunkler.

Als nächstes verbindest du die längeren Pins der LEDs mit den GPIO-Ausgängen 2, 3, 4 und 5 des Arduino. Wie erwähnt, für acht LEDs verbinde die Pins 6, 7, 8 und 9 auf die gleiche Weise.
Dann schließen wir den Summer an. Beachte, dass es sich um einen passiven Summer mit Polarität handelt. Der negative Pin muss an Masse (GND) angeschlossen werden, der positive Pin an GPIO 11. Sonst hörst du keinen Ton.
Zuletzt der Taster, der das Spiel startet. Wir benötigen einen pull-up resistor Widerstand von 1 Kiloohm, der mit 5V und dem Taster verbunden ist. Der gleiche Taster-Pin ist auch mit GPIO 12 verbunden. Der andere Taster-Pin muss an Masse angeschlossen werden.
Damit ist die Verdrahtung abgeschlossen. Wenn du unsicher bist, wirf einen Blick auf die detaillierte Verdrahtungstabelle unten.
Verdrahtungstabelle
| Von | Pin | Kabel-Farbe | Zu | Pin |
| Arduino | GND | Blau | Widerstand 220Ω | 1 |
| Widerstand 220Ω | 2 | Blau | LED1 | Kathode |
| Widerstand 220Ω | 2 | Blau | LED2 | Kathode |
| Widerstand 220Ω | 2 | Blau | LED3 | Kathode |
| Widerstand 220Ω | 2 | Blau | LED4 | Kathode |
| Arduino | 2 | Weiß | LED1 | Anode |
| Arduino | 3 | Gelb | LED2 | Anode |
| Arduino | 4 | Grün | LED3 | Anode |
| Arduino | 5 | Orange | LED4 | Anode |
| Arduino | GND | Blau | Summer | Negativer Pin |
| Arduino | 11 | Lila | Summer | Positiver Pin |
| Arduino | 5V | – | Widerstand 1KΩ | 1 |
| Widerstand 1KΩ | 1 | – | Taster | 1 |
| Taster | 1 | Cyan | Arduino | 12 |
| Taster | 2 | Blau | Arduino | GND |
Code
In diesem Abschnitt implementieren wir den Code, der das Spiel steuert. Die LEDs sollen in einer kreisförmigen Reihenfolge aufleuchten, die mit der Zeit langsamer wird, bis sie komplett stoppt. Gleichzeitig soll ein Klickgeräusch erklingen, ähnlich dem Geräusch eines drehenden Rades, und ein Gewinnsound abgespielt werden, wenn das Rad stoppt. Schließlich soll das Spiel starten, wenn der Taster gedrückt wird.
Der folgende Code erledigt all das. Schau ihn dir kurz an, um einen Überblick zu bekommen. Danach gehen wir ins Detail.
const int btnPin = 12;
const int buzzerPin = 11;
const int nLeds = 4;
const byte ledPins[] = { 2, 3, 4, 5 };
int curLed = 0;
void setLed(int state, int pause) {
digitalWrite(ledPins[curLed], state);
delay(pause);
}
void spin(int pause) {
curLed = (curLed + 1) % nLeds;
tone(buzzerPin, 100, 5);
setLed(HIGH, pause);
setLed(LOW, 0);
}
void win() {
for (int i = 0; i < 10; i++) {
tone(buzzerPin, 1000, 100);
setLed(LOW, 100);
tone(buzzerPin, 1500, 100);
setLed(HIGH, 100);
}
noTone(buzzerPin);
}
void setup() {
pinMode(buzzerPin, OUTPUT);
for (int i = 0; i < nLeds; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
int button = digitalRead(btnPin);
if (button == LOW) {
setLed(LOW, 0);
int start = random(1, 50);
for (int pause = start; pause < 300; pause += 10) {
spin(pause);
}
win();
}
delay(100);
}
Konstanten und Variablen
Wir beginnen mit der Definition der Konstanten und Variablen, die im Code verwendet werden. Die btnPin Konstante gibt den Pin an, an dem der Taster angeschlossen ist. Die buzzerPin Konstante gibt den Pin an, an dem der Summer angeschlossen ist.
Die nLeds Variable gibt die Anzahl der im Spiel verwendeten LEDs an. Das ledPins Array enthält die Pins, an denen die LEDs angeschlossen sind. Wenn du mehr LEDs hinzufügen möchtest, erweitere einfach das ledPins Array und passe die nLEDs Konstante entsprechend an.
const int btnPin = 12;
const int buzzerPin = 11;
const int nLeds = 4;
const byte ledPins[] = { 2, 3, 4, 5 };
Die curLed Variable steuert, welche LED gerade aktiv ist. Sie ist ein Index in das ledPins Array. Alle anderen LEDs sind inaktiv.
int curLed = 0;
setLed-Funktion
Die setLed() Funktion ist dafür zuständig, den Zustand der aktuellen LED zu setzen und für eine bestimmte Dauer zu pausieren. Sie nimmt zwei Parameter: state (HIGH oder LOW) und pause (die Dauer in Millisekunden, die nach dem Setzen des LED-Zustands pausiert wird).
Wenn du Schwierigkeiten damit hast, schau dir unser Tutorial zu How To Blink An LED Using Arduino an.
void setLed(int state, int pause) {
digitalWrite(ledPins[curLed], state);
delay(pause);
}
spin-Funktion
Die spin() Funktion wird aufgerufen, wenn der Taster gedrückt wird, um das Rad zu starten. Sie erhöht die curLed Variable, um die nächste LED in der Reihenfolge auszuwählen. Außerdem spielt sie einen sehr kurzen (5 ms), tiefen (100 Hz) Ton auf dem Summer ab. Das klingt, als würde der Zeiger die Stifte des drehenden Rades treffen. Danach ruft sie die setLed() Funktion auf, um die aktuelle LED für eine bestimmte Pausendauer einzuschalten und dann auszuschalten.
Der Ausdruck curLed = (curLed + 1) % nLeds stellt sicher, dass curLed sich wieder auf 0 zurücksetzt, wenn es gleich der Anzahl der LEDs (nLeds) wird.
Wenn du mehr über die Steuerung eines Summers erfahren möchtest, kannst du How To Interface A Piezo Buzzer With Arduino lesen.
void spin(int pause) {
curLed = (curLed + 1) % nLeds;
tone(buzzerPin, 100, 5);
setLed(HIGH, pause);
setLed(LOW, 0);
}
win-Funktion
Die win() Funktion wird aufgerufen, wenn das Rad stoppt. Sie spielt eine Tonfolge auf dem Summer ab und schaltet die LEDs abwechselnd ein und aus, um einen optisch ansprechenden Effekt zu erzeugen. Nach der Melodie wird der Summer ausgeschaltet.
void win() {
for (int i = 0; i < 10; i++) {
tone(buzzerPin, 1000, 100);
setLed(LOW, 100);
tone(buzzerPin, 1500, 100);
setLed(HIGH, 100);
}
noTone(buzzerPin);
}
Setup-Funktion
In der setup() Funktion setzen wir den pinMode für den Summer-Pin auf OUTPUT, da wir darauf schreiben werden. Außerdem setzen wir den pinMode für jeden LED-Pin im ledPins Array auf OUTPUT. Und der btnPin Pin wird auf INPUT gesetzt, da wir den Zustand des Tasters auslesen wollen.
void setup() {
pinMode(btnPin, INPUT);
pinMode(buzzerPin, OUTPUT);
for (int i = 0; i < nLeds; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
Loop-Funktion
Die loop() Funktion ist der Hauptteil des Codes, der kontinuierlich läuft. Sie liest zuerst den Zustand des Tasters mit digitalRead() aus. Wenn der Taster gedrückt ist (LOW), schaltet sie die aktuelle LED aus, generiert einen zufälligen Startwert für die Pausendauer und ruft dann die spin() Funktion wiederholt mit zunehmenden Pausendauern auf, bis ein Maximalwert (500 ms) erreicht ist. Schließlich ruft sie die win() Funktion auf, um die Gewinnsequenz abzuspielen.
Für mehr Informationen zum Auslesen eines Tasters schau dir unser Tutorial zu How To Use A Push Button With Arduino an.
void loop() {
int button = digitalRead(btnPin);
if (button == LOW) {
setLed(LOW, 0);
int start = random(1, 50);
for (int pause = start; pause < 500; pause += 10) {
spin(pause);
}
win();
}
delay(100);
}
Und das war’s! Mit diesem Code erhältst du einen schönen Dreh-Effekt. Sobald der Taster gedrückt wird, leuchten die LEDs in kreisförmiger Reihenfolge auf, und da die Pausenzeit stetig zunimmt, wird die Sequenz immer langsamer, bis der Gewinnzustand erreicht ist. Danach kannst du den Taster erneut drücken. Da der Startwert zufällig ist, variiert die Drehzeit bei jedem Tastendruck.
3D-gedrucktes Rad
Vier LEDs auf einem Breadboard zu platzieren ist einfach, aber bei acht LEDs wird es schwierig. Ich wollte ein schönes Rad haben und habe meinen 3D-Drucker genutzt, um einen LED-Halter in folgender Form zu drucken:

Du kannst die STL file for the Wheel here herunterladen. Beachte die zwei Halterungen auf der Rückseite, in die du zwei Holzspieße einstecken kannst. So kannst du das Rad bei Bedarf schräg positionieren. Das Bild unten zeigt, wie das tatsächlich gedruckte Rad mit eingesetzten LEDs aussieht.

Du kannst das gerne als Ausgangspunkt für ein schöneres Design verwenden. Ich möchte ein komplettes Gehäuse mit integriertem Arduino Nano und Startknopf in der Mitte drucken. Aber das ist Thema eines anderen Tutorials.
Fazit
In diesem Tutorial haben wir gelernt, wie man ein Spin the Wheel-Spiel baut. Mit den Schritt-für-Schritt-Anleitungen solltest du jetzt ein voll funktionsfähiges Spiel haben.
Wir haben mit der Zusammenstellung aller benötigten Teile begonnen, darunter ein Arduino-Board, LEDs, ein Taster, ein Summer und ein Taster-Set. Danach haben wir die Komponenten mit dem Arduino verbunden. Es ist wichtig, auf die Verbindungen zu achten, sonst leuchten die LEDs nicht in der richtigen Reihenfolge. Nachdem die Verdrahtung abgeschlossen war, sind wir zum Programmieren übergegangen.
Zusammenfassend ist der Bau eines Spin the Wheel-Spiels ein spaßiges und fesselndes Projekt, das die Vielseitigkeit von Arduino-Boards zeigt. Es ermöglicht dir, Hardware und Software zu kombinieren, um ein interaktives Spiel zu schaffen, das Menschen jeden Alters Freude bereitet.
Warum also nicht die benötigten Teile sammeln, die Anleitungen in diesem Tutorial befolgen und dein eigenes Spin the Wheel-Spiel erstellen? Es ist eine großartige Möglichkeit, mehr über Arduino zu lernen, deine Programmierfähigkeiten zu verbessern und Spaß mit Freunden und Familie zu haben.
Wenn du Fragen hast oder während des Prozesses auf Schwierigkeiten stößt, kannst du gerne den Abschnitt mit den häufig gestellten Fragen konsultieren oder dich an die Arduino-Community wenden. Viel Spaß beim Bauen!
Häufig gestellte Fragen
Hier sind einige häufig gestellte Fragen zum Bau eines Spin the Wheel-Spiels.
Was ist ein Spin the Wheel-Spiel?
Ein Spin the Wheel-Spiel ist ein beliebtes Spiel, bei dem Spieler ein Rad drehen, um ihren Preis oder das Ergebnis zu bestimmen. Es wird oft in Spielshows, auf Jahrmärkten und Veranstaltungen verwendet, um Spannung und Zufallselemente hinzuzufügen.
Wie funktioniert das Spin the Wheel-Spiel?
Das Spin the Wheel-Spiel funktioniert, indem der Arduino die LEDs und den Summer basierend auf der Eingabe des Tasters oder Schalters steuert. Wenn der Taster gedrückt wird, leuchtet der Arduino die LEDs in einer Reihenfolge auf und spielt einen Soundeffekt über den Summer ab. Die Sequenz verlangsamt sich, bis eine finale LED leuchtet, die das Ende des Spiels signalisiert.
Kann ich die Ergebnisse des Spin the Wheel-Spiels anpassen?
Ja, du kannst die Ergebnisse des Spin the Wheel-Spiels nach deinen Wünschen anpassen. Du kannst jedem LED eine andere Belohnung, Aktion oder Nachricht zuweisen und den Arduino-Code entsprechend ändern.
Gibt es zusätzliche Funktionen, die ich dem Spin the Wheel-Spiel hinzufügen kann?
Absolut! Du kannst das Spin the Wheel-Spiel erweitern, indem du zusätzliche Funktionen hinzufügst, wie ein Display zur Anzeige des ausgewählten Ergebnisses, einen Motor zum physischen Drehen des Rades oder sogar eine drahtlose Verbindung, um das Spiel aus der Ferne zu steuern.
Kann ich mehr als acht LEDs am Rad haben?
Die Anzahl der GPIO-Ports auf einem Arduino Uno ist begrenzt. Wenn du mehr LEDs, zum Beispiel 16, hinzufügen möchtest, benötigst du entweder ein größeres Board mit mehr GPIO-Pins oder einen GPIO-Expander. Siehe unser Tutorial Using GPIO Expander MCP23017 With Arduino, das dir erlaubt, bis zu 128 LEDs zu steuern!
Kann ich mehr als eine LED gleichzeitig einschalten?
Ja, das kannst du. Da aber alle LEDs über einen einzigen Strombegrenzungswiderstand verbunden sind, werden die LEDs umso dunkler, je mehr gleichzeitig leuchten. Du kannst sie einzeln anschließen, um das zu vermeiden, benötigst dann aber möglicherweise eine zusätzliche Stromversorgung.
Wenn du Fragen hast oder Hilfe brauchst, hinterlasse gerne einen Kommentar.
Viel Spaß beim Tüfteln ; )

