
Wenn der Taster gedrückt wird, bewegt sich der auf einem Schrittmotor befestigte Zeiger durch Zufall auf ein farbiges Feld. Ein LCD zeigt die Anzahl der Bewegungen, das getroffene Feld und eine Statistik der bisher getroffenen Felder an.
So sieht es aus:
⇒Glücksrad im Seriellen Monitor

In einem Elektromotor wird durch das Zusammenspiel von Statoren, feststehenden äußeren magnetischen Spulen, und einem sich darin drehenden Rotor eine Drehbewegung erzeugt. Der Strom wird durch Schleifkontakte so zugeführt, dass genau in dem Moment, wo sich Nord-und Südpol angenähert haben, die Stromrichtung im Rotor umgepolt wird.
Quelle: 🔗https://commons.wikimedia.org/wiki/File:Gleichstrommaschine.svg (abgerufen am 06.01.25)
Für den Schrittmotor wird eine Treiberplatine benötigt. In diesem Fall ist es die ULN2003. Zwei mögliche Ausführungen sind hier abgebildet:

Bei der linken Treiberplatine müssen die Steckverbindungen mit Kabeln zum Arduino hergestellt werden, bei der rechten Ausführung kann der linke Teil direkt in den Arduino gesteckt werden.
Bei beiden Varianten wird der Stecker des Motors in die Treiberplatine gesteckt.


Pinbelegung
IN1 ⇒ 4
IN2 ⇒ 5
IN3 ⇒ 6
IN4 ⇒ 7
Bei dem Motor handelt es sich um einen Motor mit der Typbezeichnung 28BYJ-48. Im Unterschied zum Servomotor kann der Schrittmotor eine 360°-Drehung ausführen und kann vorwärts und rückwärts laufen.
Ein volle Umdrehung sind bei diesem Motor 2048 Schritte.

Das Glücksrad besteht aus 4 verschiedenfarbigen Feldern und einem drehbaren Pfeil. Das Programm ermittelt eine zufällige Anzahl von Schritten zwischen 1 und 2048. Der Motor dreht bis zur angegebenen Position und stellt anhand der zurückgelegten Schritte die Farbe des getroffenen Feldes fest.

Befestige das Glücksrad und den Pfeil am Schrittmotor. Achte darauf, dass sich das Glücksrad nicht drehen kann, der Pfeil sich aber frei bewegen kann und sich in der richtigen Position befindet.
Die Vorlage für das Glücksrad und den Pfeil findest du ⇒hier.
Benötigte Bauteile:
- Schrittmotor 28BYJ-48
- Treiberplatine ULN2003
- Taster
- Leitungsdrähte
Benötigte Bibliotheken (die Bibliothek Stepper.h ist eingebaut):
![]() | ![]() |
![]() |
Das „Prellen“ des Tasters soll mit der Bibliothek Bounce2 verhindert werden.
Binde auch die übrigen Bibliotheken ein und definiere die Variablen.
Beachte die Kommentare.
#include "Stepper.h"
#include "LiquidCrystal_I2C.h"
#include "Bounce2.h"
LiquidCrystal_I2C lcd(0x27, 20, 4);
// Schritte pro Umdrehung
int SchritteDrehung = 2048;
/*
Zuordnung der Pins:
entweder 4, 6, 5, 7
oder 5, 7, 4, 6
diejenige auswählen, bei der die Drehung
im Uhrzeigersinn ausgeführt wird
*/
Stepper Motor(SchritteDrehung, 5, 7, 4, 6);
int TASTER = 10;
// die Farben
int Rot = 0;
int Blau = 0;
int Gelb = 0;
int Gruen = 0;
// Bibliothek Bounce2
// "Prellverhinderer" für den Taster starten
Bounce Start = Bounce();
Der setup-Teil:
void setup()
{
// Instanz des Objekts Bounce dem Taster zuordnen
// Zeitintervall einstellen
Start.attach(TASTER);
Start.interval(20);
pinMode(TASTER, INPUT_PULLUP);
// LCD einschalten
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Gl\365cksrad");
// Zufallsgenerator starten
randomSeed(analogRead(A0));
// Geschwindigkeit des Motors
Motor.setSpeed(15);
}
Der loop-Teil. Beachte die Kommentare.
void loop()
{
// Taster gedrückt
if (Start.update())
{
if (Start.read() == LOW)
{
int Minimum = 1;
int Maximum = SchritteDrehung;
int Position = random(Minimum, Maximum);
// Motor auf zufällige Position fahren
Motor.step(Position);
// Ergebnis auf LCD anzeigen
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Position: " + String(Position));
lcd.setCursor(0, 1);
// Farbe je nach Position bestimmen
if (Position > 0 && Position < 512)
{
lcd.print("Gelb");
Gelb ++;
}
if (Position > 512 && Position < 1024)
{
lcd.print("Gr\365n:");
Gruen ++;
}
if (Position > 1024 && Position < 1536)
{
lcd.print("Rot:");
Rot ++;
}
if (Position > 1536 && Position < 2048)
{
lcd.print("Blau");
Blau ++;
}
// Statistik anzeigen
lcd.setCursor(0, 2);
lcd.print("Rot: " + String(Rot));
lcd.setCursor(10, 2);
lcd.print("Blau: " + String(Blau));
lcd.setCursor(0, 3);
lcd.print("Gelb: " + String(Gelb));
lcd.setCursor(10, 3);
lcd.print("Gr\365n: " + String(Gruen));
delay(1000);
// Motor an den Ausgangspunkt zurückfahren
Motor.step(-Position);
}
}
}
Verwandte Anleitungen:
- Automatische Tür mit Hall-Sensoren
- Glücksrad mit 360°-Servomotor
- Glücksrad mit Servomotor
- Servomotor mit einem Potentiometer steuern
- Türöffner mit einem RFID-Modul und Servomotor
- Wahrsagerin
Letzte Aktualisierung: