richtig, wie die Aufgabe praktisch / technisch zu lösen ist, ist nicht gefragt.
Einen Startzeitpunkt braucht man ntl, vielleicht gibt es einen Start-Button, der die Kugeln auf der Rampe startet? Muss man abklären!
wenn, dann wäre das der Startzeitpunkt. Man wartet solange, bis der button gedrückt wurde: gedrückt = high = true (pulldown gegen Masse, wenn gedrückt dann auf Vc hochgeschaltet), dann liest man die Systemzeit mit millis() aus.
Code:
#define startbtn 3 // wenn der Startbutton auf pin 3 liegt.
uint32_t t0;
while ( !( digitalRead(startbtn) ) );
t0 = millis();
in diesem Moment ist die Lichtscharnke lt. Aufgabenstellung noch auf LOW (niedriger Wert), wenn der Ball durchläuft, geht sie auf HIGH (5V, hoher Wert).
Sagen wir, die LS liegt auf pin A0:
Code:
#define LSpin A0
int ls;
ls = analogRead( LSpin );
Das ergibt im Moment des Kugel-Durchlaufs also einen Pinchange, und dafür gibt es bei Arduino einen Pinchange-Interrupt (LOW => HIGH)
Vermutlich (!) geht sie nach dem Durchlauf automatisch wieder auf LOW, aber auch das musst du rauskriegen.
Ich darf dir hier sicher nicht die Lösung für den Interrupt verraten, denn es ist ja eine Prüfungsaufgabe, aber dazu gibt es diesen Link:
http://playground.arduino.cc/Main/PinChangeInterrupt
Sobald dieser ausgelöst wird, wird wieder mit millis() die Zeit gemessen, diesmal t1.
Nun hast du 2 Systemzeiten, die Differenz ist die Laufzeit:
Code:
uint32_t t1, dt;
t1 = millis();
dt = t1 - t0;
da hier in der Aufgabenstellung aber nichts über einen Startbutton gesagt wurde, kann es auch sein, dass der Laufzeitunterschied zwischen 2 und mehreren darauf folgenden Bällen gemessen werden soll, dann geht es etwas anders:
t0 : Zeit millis() 1.Pinchange -Interrupt (LOW ->HIGH)
t1 : Zeit millis() beim darauffolgenden Pinchange interrupt (LOW ->HIGH)
dt = t1-t0;
jetzt die letzte Zeit als t0 speichern und dann wieder t1 beim 2. Ball lesen:
t0 = t1;
t1 : Zeit millis() beim darauffolgenden Pinchange interrupt (LOW ->HIGH)
usw.
wie gesagt, die Start-Bedungung für die Stoppuhr musst du rauskriegen!
klar soweit?
Lesezeichen