Zusammenbau des Messgerätes

Nun geht's ans Eingemachte: Wir bauen die Komponenten Arduino, Leuchtdiode, Taster und Servomotor zusammen, um damit die Reaktionszeit messen zu können.

Was du schon weißt

  • Wie man eine Leuchtdiode an den Arduino anschließt und einen Widestand verwendet.
  • Wie man einen Quelltext bzw. ein Programm auf den Arduino hochlädt.
  • Wie man eine Leuchtdiode zum Blinken bringt.
  • Wie man eine Leuchtdiode auf Tastendruck ein- bzw. ausschaltet.
  • Wie man mit dem Arduino abfragt, ob ein Taster gedrückt wurde.
  • Wie man mit dem Arduino einen Servomotor ansteuert.
Stecke niemals auf dem Steckbrett um, während der Arduino noch mit Strom versorgt wird.
Achte darauf, dass auf dem Steckbrett keine Kurzschlüsse entstehen.

Was kommt jetzt?

Wie gesagt: nun muss eigentlich alles nur noch geeignet zusammengebaut werden. Außerdem basteln wir uns aus der mitgerbachten Pappe eine Skala, an der mn schließlich die Reationszeit ablesen können soll.

Aufbau auf dem Steckbrett

Achte besonders darauf, dass du die Anschlüsse für das rote und das schwarze Kabel des Motors nicht vertauschst. Dadurch würde der Motor irreparabel beschädigt.
Achte auch darauf, dass die beiden Kabel, die an die Kontakte GND bzw. VIN angeschlossen werden, nicht verbunden werden! Dadurch entstünde ein Kurzschluss, den der Arduino keine Sekunde lang aushält, bevor er kaputt geht.

das Programm

Zunächst sei darauf hingewiesen, dass der gesamte Code zum Kopieren und ohne Erläuterungen weiter unten zu finden ist.

Das Programm besteht - wie immer - aus den beiden Teilen setup und loop.
Im setup-Teil legen wir z.b. fest, dass der Kontakt zur Leuchtdiode ein Ausgang ist, der Kontakt zum Taster dagegen ein Eingang. Außerdem teilen wir dem Arduino mit, dass der Kontakt zur Servomotor tatsächlich einen Servomotor betreuen soll. Außerdem wird der Zufallszahlengenerator eingeschaltet:

#include <Servo.h> 
 
Servo myservo;  
 
int ledPin = 2;
int buttonPin = 3;
int servoPin = 5;
int pos;
 
void setup() 
{ 
  myservo.attach(servoPin);
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
  randomSeed(analogRead(A0));
}

Im loop-Teil wird es nun spannend. Was soll das Programm denn tun?

  1. Auf einen Startbefehl warten. In unserem Fall darauf, dass der Taster betätigt wird.
  2. Den Motor in die Ausgangsposition bewegen.
  3. Die Leuchtdiode einschalten.
  4. Den Motor solange langsam bewegen, bis erneut der Taster betätigt wird.
  5. Die Leuchtdiode ausschalten.
  6. Wieder von vorne beginnen!

Der 1. Schritt wäre ganz zu Beginn nicht notwendig. Erst, wenn man mehrfach hintereinander die Reaktionszeit messen möchte, muss nach der ersten Messung oder halt vor der Messung sichergestellt werden, dass der Motor wieder in der Ausgangsposition steht.

void loop() {
  //--------------------------------------
  // Warten auf Tastendruck
  while (digitalRead(buttonPin) && pos<181) {}
  pos=0;
  //-------------------------------------- Motor auf Null
  myservo.write(pos);
  delay(random(1500,3000));
  //-------------------------------------- LED einschalten
  digitalWrite(ledPin, HIGH);
  //-------------------------------------- warten, bis Tastendruck
  //-------------------------------------- derweil Motor immer weiter fahren
  pos=0;
  while (digitalRead(buttonPin)) {
    pos++;
    myservo.write(pos);
    delay(5);
  }
  //-------------------------------------- LED ausschalten
  digitalWrite(ledPin, LOW);
  delay(250);
}

Quellcode

#include <Servo.h> 
 
Servo myservo;  
 
int ledPin = 2;
int buttonPin = 3;
int servoPin = 5;
int pos;
 
void setup() 
{ 
  myservo.attach(servoPin);
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
  randomSeed(analogRead(A0));
} 
 
 
void loop() {
  while (digitalRead(buttonPin)) {delay(100);}
  pos=0;
 
  myservo.write(pos);
  delay(random(1500,3000));
 
  digitalWrite(ledPin, HIGH);
 
  pos=0;
  while (digitalRead(buttonPin) && pos<181) {
    pos++;
    myservo.write(pos);
    delay(5);
  }
 
  digitalWrite(ledPin, LOW);
  delay(250);
}

Messskala und Halterung

Zu guter Letzt kann noch eine Skala gebaut werden, sodass man darauf ablesen kann, wieviel Zeit bis zur Reaktion nun vergangen ist. Ein Beispiel dazu kannst du bei Hern. Lange sehen.

Ziel erreicht

Herzlichen Glückwunsch! Du weißt nun, wie man mithilfe des Microcomputers Arduino, einer Leuchtdiode, eines Tasters, eines Servomotors und diverser Kleinteile ein kleines Projekt bastelt und programmiert.

Und wie geht es jetzt weiter?

Unser Projekt ist nun zuende. Zunächst hoffen wir, dass es euch gefallen hat. Wenn du nach Möglichkeiten suchst, weiterhin mit dem Arduino kleine Projekte zu bauen, dann gibt es mehrere Möglichkeiten:

  1. Du kommst ans Ratse. Dort gibt es immer wieder Angebote in diesem Bereich.
  2. Wenn du nicht ans Ratse kommst, kannst natürlich auf eigene Faust Projekte in Angriff nehmen. Ideen dazu gibt es im Internet zuhauf. Alles, was du benötigst, ist ein internetfähiger Computer, damit du dir für zuhause die Arduino-IDE, die Programmieroberfläche herunterladen kannst. Dann brauchst du lediglich ein paar Kleinteile und den Arduino und schon geht's los.
  3. Eventuell gibt es auch als Nichtratseschüler die Möglichkeit, an unseren Angeboten teilzunehmen. Sprich uns einfach darauf an und verpasse nicht, wenn auf unserer Homepage ein solches angeboten wird.