Nun geht's ans Eingemachte: Wir bauen die Komponenten Arduino, Leuchtdiode, Taster und Servomotor zusammen, um damit die Reaktionszeit messen zu können.
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.
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?
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); }
#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); }
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.
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.
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: