Glücksrad mit 360-Grad-Servo bauen

FunduinoZuletzt aktualisiert am

Ein Zufallsgenerator mit 360-Grad-Servomotor und Taster

Ein Tastendruck, das Rad dreht sich für eine zufällige Zeit in eine zufällige Richtung und bleibt auf einem der farbigen Felder stehen: Mit einem 360°-Servomotor und einem Kurzhubtaster baust du ein kleines Glücksrad.

Dabei lernst du den Unterschied zwischen einem gewöhnlichen Servomotor und einem 360°-Servo kennen und arbeitest mit dem Zufallsgenerator des Arduino.

360-Grad-Servomotor FS90R
Der FS90R dreht endlos

Der 360-Grad-Servomotor

Ein normaler Servomotor fährt eine bestimmte Position an. Der 360°-Servomotor kann sich dagegen dauerhaft weiterdrehen: Du gibst ihm keine Position vor, sondern eine Drehrichtung und eine Geschwindigkeit.

  • 0 – maximale Geschwindigkeit im Uhrzeigersinn
  • 90 – Motor anhalten
  • 180 – maximale Geschwindigkeit gegen den Uhrzeigersinn

Die Werte dazwischen bestimmen Drehrichtung und Geschwindigkeit. Je näher ein Wert an 90 liegt, desto langsamer dreht der Motor.

Im Artikel steht, der Motor müsse zwingend an einem Pin mit Pulsweitenmodulation angeschlossen werden. Das stimmt nicht: Die Servo-Bibliothek erzeugt das Signal über einen Timer und arbeitet an jedem digitalen Pin.

360-Grad-Servomotor FS90R
Der FS90R dreht endlos

Taster und Motor anschließen

Für das Glücksrad brauchst du neben deinem Mikrocontroller nur zwei Bauteile: den 360°-Servomotor und einen Kurzhubtaster.

Der Motor kommt an Pin 9, der Taster an Pin 7. Den Taster brauchst du nicht extra zu beschalten – im Sketch wird der interne Pullup-Widerstand des Mikrocontrollers eingeschaltet. Der Eingang liegt dadurch auf HIGH und fällt beim Tastendruck auf LOW.

Zieht der Servo beim Anlaufen viel Strom, versorge ihn besser über ein eigenes Netzteil mit 5 V und verbinde nur GND und die Signalleitung mit dem Mikrocontroller.

Verkabelung von Servomotor und Taster am Arduino
Der Schaltplan

Das Programm

Zuerst bindest du die Servo-Bibliothek ein und legst die Variablen an. Minimum und Maximum bestimmen, wie lange sich das Rad mindestens und höchstens dreht.

Im setup-Teil hängst du den Motor an Pin 9, hältst ihn mit Motor.write(90) an und startest den Zufallsgenerator. randomSeed(analogRead(0)) liest dafür das Rauschen eines unbeschalteten analogen Eingangs aus, damit die Zufallswerte nach jedem Neustart andere sind.

Im loop-Teil fragst du den Taster ab. Wird er gedrückt, bestimmt random(0, 2) die Drehrichtung, der Motor dreht eine zufällige Anzahl von Millisekunden und bleibt dann stehen.

Der Sketch entprellt den Taster nicht und wartet auch nicht auf das Loslassen: Hältst du den Taster gedrückt, dreht das Rad immer weiter. Außerdem liegen die Werte Motor.write(80) und Motor.write(100) dicht an der Totzone um 90, das Rad dreht dadurch sehr langsam. Für ein Glücksrad passen Werte näher an 0 und 180 besser.

Bibliothek einbinden und Variablen definieren
// eingebaute Bibliothek einbinden
# include "Servo.h"
// Name des Motors
Servo Motor;
// Minimum und Maximum der "Laufzeit" des Motors
int Minimum = 300;
int Maximum = 1500;
// Pin des Tasters
int Taster = 7;
// Variable für die Drehrichtung
int Drehrichtung;
Der setup-Teil
void setup()
{
  // Motor an Pin 9
  Motor.attach(9);
  // Motor anhalten
  Motor.write(90);
  // Zufallsgenerator starten
  randomSeed(analogRead(0));
  // INPUT_PULLUP: Taster als Eingang definieren, Eingang auf HIGH setzen
  pinMode(Taster, INPUT_PULLUP);
}
Der loop-Teil
void loop()
{
  // Status des Tasters abfragen
  int TasterLesen = digitalRead(Taster);
  // Taster wurde gedrückt
  if (TasterLesen == LOW)
  {
    // Drehrichtung zufällig bestimmen
    Drehrichtung = random(0, 2);
    // Motor im Uhrzeigersinn drehen
    if (Drehrichtung == 0) Motor.write(80);
    // Motor gegen den Uhrzeigersinn drehen
    else Motor.write(100);
    // zufällige Anzahl von Millisekunden drehen
    delay(random(Minimum, Maximum));
    // Motor anhalten
    Motor.write(90);
  }
}

Die Vorlage für das Glücksrad

Auf den Zeiger des Servomotors setzt du eine Scheibe mit farbigen Feldern. Wird der Taster gedrückt, dreht der Motor für eine zufällige Zeit und der Zeiger bleibt auf einem der Felder stehen.

Die folgende Vorlage kannst du als Ausgangspunkt nehmen: Kreis mit farbigen Segmenten und dazu der Pfeil für den Zeiger.

Die Vorlage liegt im Artikel nur als Bild vor, nicht als Druckvorlage zum Herunterladen.

Vorlage mit farbig geteiltem Kreis und Zeiger
Vorlage für Rad und Zeiger
Anleitung bewerten

Kommentare

Frage stellen oder Erfahrung teilen

Schreib uns, wenn etwas nicht funktioniert. Nenne dabei dein Board und die Fehlermeldung.

Wir prüfen jeden Kommentar vor der Veröffentlichung. Deine E-Mail-Adresse bleibt bei uns.