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