Glücks­rad mit Ser­vo­mo­tor

Lese­zeit: 4 Minu­ten
Navi­ga­ti­on

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

Benö­tig­te Bau­tei­le:

  • 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)

Bin­de die Biblio­thek Servo.h ein, defi­nie­re die Varia­blen und star­te den Zufalls­ge­ne­ra­tor.

# include <Servo.h>
Servo Motor;
int Position;
int TASTER = 7;
int TasterLesen;

Im setup-Teil wird neben der Defi­ni­ti­on des Tas­ters 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);
  pinMode(LAUTSPRECHER, OUTPUT);

  // 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 gefah­ren.

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 wer­den.

Ergän­ze im Kopf des Pro­gramms:

int LAUTSPRECHER = 6;

Füge im loop-Teil hin­zu:

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);
    
    // 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
  }
}   

Du kannst auch ande­re Fre­quenz­be­rei­che ver­wen­den.



Ver­wand­te Auf­ga­ben:


Letzte Aktualisierung: 21. Mrz 2020 @ 8:40