====== 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 ==== {{ :faecher:informatik:schrecksekunde:schrecksekunde-zusammen.png |}} 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 [[faecher:informatik:schrecksekunde:zusammenbau#quellcode|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 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?\\ - Auf einen Startbefehl warten. In unserem Fall darauf, dass der Taster betätigt wird. - Den Motor in die Ausgangsposition bewegen. - Die Leuchtdiode einschalten. - Den Motor solange **langsam** bewegen, bis erneut der Taster betätigt wird. - Die Leuchtdiode ausschalten. - 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 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: - Du kommst ans Ratse. Dort gibt es immer wieder Angebote in diesem Bereich. - 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. - 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.