Glücks­rad mit Servomotor

Lese­zeit: 4 Minu­ten

Lösung
Seite als PDF

Wenn der Tas­ter gedrückt wird, soll der Ser­vo­mo­tor auf eine zufäl­li­ge Posi­ti­on fah­ren. Der Zei­ger bleibt dann auf einem der far­bi­gen Fel­der stehen.

So sieht es aus:

Lege den Motor auf die Sei­te und befes­ti­ge das ➨Glücks­rad und den Zei­ger am Motor.

Benö­tig­te Bauteile:

  • Ser­vo­mo­tor
  • Tas­ter
  • Lei­tungs­dräh­te

Baue die Schal­tung auf.
(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

Benö­tig­te Bibliothek

Bin­de die Biblio­thek Servo.h ein und defi­nie­re die Variablen.

# include "Servo.h"

// Bezeichnung des Motors
Servo Motor;

int Position;
int TASTER = 7;
int TasterLesen;

Im set­up-Teil wird neben der Defi­ni­ti­on des Tas­ters und und dem Start des Zufalls­ge­nera­tor auch der Motor auf die 180°-Position (nach links) gefah­ren. Du musst den Motor und das Glücks­rad so posi­tio­nie­ren, dass der Zei­ger links steht.

void setup()
{
  pinMode(TASTER, INPUT_PULLUP);
  
  // Pin 9 dem Motor zuordnen
  Motor.attach(9);

  // Zufallsgenerator starten
  randomSeed(A0);

  // Motor nach links fahren
  Motor.write(180);
}

Im loop-Teil wird auf Tas­ter­druck eine Zufalls­zahl zwi­schen 5 und 175 bestimmt und der Motor wird zu die­ser Posi­ti­on gefahren.

void loop()
{
  TasterLesen = digitalRead(TASTER);
  if (TasterLesen == LOW)
  {
    delay(500);
    int Minimum = 5;
    int Maximum = 175;

    // Zufallszahl ermitteln
    int Position =  random(Minimum, Maximum);

    // Motor zur Zufallsposition fahren
    Motor.write(Position);
    delay(500);
  }
}

Schlie­ße einen Laut­spre­cher an und ergän­ze das Pro­gramm:
Wenn der Zei­ger im blau­en Feld ste­hen bleibt, soll eine Ton­fol­ge wie­der­ge­ge­ben werden.

Ergän­ze im Kopf des Programms:

int LAUTSPRECHER = 6;

Füge im loop-Teil hinzu:

void loop()
{
  TasterLesen = digitalRead(TASTER);
  if (TasterLesen == LOW)
  {
    delay(500);
    int Minimum = 5;
    int Maximum = 175;
    int Position =  random(Minimum, Maximum);
    Motor.write(Position);
    delay(500);
    
    <strong>// diesen Teil einfügen
    if (Position > 45 && Position < 90)
    {
      // Frequenzbereich 1000 bis 2000 
      for (int i = 1000; i <= 2000; i += 100)
      {
        tone(LAUTSPRECHER, i);
        delay(100);
        noTone(LAUTSPRECHER);
      }
      
      for (int i = 2000; i > 1000; i -= 100)
      {
       tone(LAUTSPRECHER, i);
       delay(100);
       noTone(LAUTSPRECHER);
      }
    }
    // Ende des eingefügten Teils</strong>
  }
}   

Du kannst auch ande­re Fre­quenz­be­rei­che verwenden.


Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:

s

Letzte Aktualisierung: 30. Jan 2024 @ 9:46