Hier ist der Beispielcode zur Geschwindigkeitsbestimmung. Mit der Weja-Lib sind es wirklich nur ein paar Zeilen. Der relevante Code ist als Auszug hier:
Code:
unsigned long endtime=Gettime()+1000;
while(1){
if (Gettime()>endtime){
v=encoder[0]*3; // berechnet Geschwindigkeit in mm/s
//SerWrite("v = ",4); PrintInt(v); SerWrite("mm/s\n\r",6);
endtime=Gettime()+1000; //setzt neue Sekunde auf
Encoder_Set(0,0); //Encoder auf 0 setzen
}
}
Das gesamte Programm incl. Weja-Lib ist in dem angehängten zip-File.
Erklärung:
Gettime() ist eine Funktion in asuro.c, die einen Taktzähler in ms zurückgibt.
encoder[0] ist die Variable in der die Helligkeitsunterschiede mittels einer Interruptroutine hochgezählt werden.
Mit der Zeile
v=encoder[0]*3;
wird die Geschwindigkeit in mm/s berechnet, weil bei mir ein Helligkeitsunterschied 3mm entspricht.
Wenn du das angehängte Beispielprogramm compilierst, dann musst du auch die dazugehörigen Dateien asuro.c und asuro.h aus dem zip-File verwenden, sonst läuft es nicht.
Gruss Waste
Lesezeichen