Zeitmessung mit Lichtschranke


hallo jungs,
ich möchte gern eine zeitmessung mittels einer lichtschranke verwirklichen.
lichtschranke funktioniert, ich kann den analogen wert der photodiode auslesen.
zeitmessung über einen taster hab ich ich schon hinbekommen.
nur beides zusammen, start wenn die lichtschranke durchbrochen wird und stop wenn die lichtschranke wieder durchbrochen wird funktioniert irgendwie nicht.
start geht irgendwie, nur stop und die anzeige wie lang ich gebraucht habe funktioniert nicht.
der schaltwert der photodiode beträgt 70, spielt aber glaub ich keine rolle.

ich habe hier mal meinen bisherigen code, könnte mal jemand drüberschauen und mir hilfe anbieten!

code: [select]

//lichtschranken-zeitmessung

int ledrot=5; //led wenn lichtschranke nicht durchbrochen
int ledblau=6; //led wenn lichtschranke durchbrochen
int ledsender=7; //ir led
int ledempf=0; //analoger eingang der photodiode
int val=0; //messdaten
long start;
float dauer;
float zeit;

void setup() {
serial.begin(9600);
pinmode(ledrot, output);
pinmode(ledblau, output);
pinmode(ledsender, output);
pinmode(ledempf, input);
digitalwrite(ledsender,high); //einschalten der ir diode
serial.println("serial-monitor ist bereit");
}

void loop() {
val=analogread(ledempf); //photodiode auslesen
if(analogread(val)<70) {
 serial.println("start der rundenmessung messung");
 digitalwrite(ledblau, high);
 digitalwrite(ledrot, low);  
 start = millis();
 while(val<70) {
   1;

}
    dauer = millis() - start;
    zeit = dauer/1000;
    serial.println("ende der runden messung");
    serial.print("deine rundenzeit betrug genau ");
    serial.print(zeit,2);
    serial.print(" sekunden");
   
 }
 else
 {
digitalwrite(ledblau, low);
digitalwrite(ledrot, high);
}
{ serial.println(val); //photodiode analogwert zum serial monitor senden
delay(150);
}
}


im moment lese ich alles nur serial-monitor ab, bis alles funktioniert.
die led`s sind nur zur information, ob die lichtschranke geschalten hat, die haben sonst keinen weiteren einfluss.

code: [select]

while(val<70) {
    1;
}


das ist eine endlosschleife, sobald die bedingung erfüllt ist.
denn das ergebnis (val<70) ändert sich innerhalb der schleife niemals mehr, daß gilt: einmal erfüllt, immer erfüllt.


Arduino Forum > International > Deutsch (Moderator: uwefed) > Zeitmessung mit Lichtschranke


arduino

Comments

Popular posts from this blog

opencv3, tbb and rasp pi 2 - Raspberry Pi Forums

small ethernet problem - Raspberry Pi Forums

Multithumb configuration params not working? - Joomla! Forum - community, help and support