Hier eine bessere Messung. asuro steppt von links nach rechts über die Linie. Startposition ist Drehpunkt der Räder über der Linie mit rechte Platinenkante links neben der Linie. In der Endposition ist der Drehpunkt immer noch unverändert über der Linie (wir zirkeln mit MotorDir(FWD,RWD)) und linke Platinenkante rechts neben Linie. Nur wenn sich nach einem Step einer der Werte verändert hatte, wurden beide Werte gelogt:
(erste Messung mit FrontLED aus)Code:0 ; 0 ; 0 1 ; 343 ; 340 2 ; 343 ; 341 3 ; 343 ; 339 4 ; 342 ; 339 5 ; 341 ; 338 6 ; 342 ; 340 7 ; 339 ; 340 8 ; 340 ; 341 9 ; 337 ; 340 10 ; 337 ; 341 11 ; 336 ; 339 12 ; 337 ; 338 13 ; 338 ; 326 14 ; 338 ; 313 15 ; 337 ; 292 16 ; 336 ; 255 17 ; 334 ; 222 18 ; 331 ; 137 19 ; 314 ; 91 20 ; 295 ; 66 21 ; 266 ; 47 22 ; 232 ; 38 23 ; 197 ; 39 24 ; 121 ; 48 25 ; 71 ; 66 26 ; 56 ; 83 27 ; 41 ; 135 28 ; 37 ; 217 29 ; 40 ; 237 30 ; 53 ; 273 31 ; 86 ; 314 32 ; 103 ; 325 33 ; 126 ; 332 34 ; 210 ; 336 35 ; 252 ; 337 36 ; 298 ; 338 37 ; 318 ; 336 38 ; 329 ; 337 39 ; 333 ; 337 40 ; 336 ; 338 41 ; 336 ; 337 42 ; 336 ; 338 43 ; 336 ; 337 44 ; 336 ; 339 45 ; 336 ; 338 46 ; 338 ; 337 47 ; 338 ; 336 48 ; 339 ; 337 49 ; 338 ; 336
Ich vermute den schwachen Akku als Ursache für die immer kleiner werdenden Werte. Es wäre nett, wenn da jemand ein Diagramm draus machen könnte. *liebschaut*
Der Code des Messprogramms (für 80mm-Räder):
GrußCode:#include "../inc/asuro.h" #include "../inc/asuro.c" #define limit 50 #define NewLine SerWrite("\n\r",2) #define Trenner SerWrite("; ",2) unsigned int data[2], data_old[2], d_l[limit], d_r[limit], zeiger; int main( void ){ Init(); zeiger=0; LineData(data_old); d_l[zeiger]=data_old[0]; d_r[zeiger]=data_old[1]; zeiger++; FrontLED(ON); Msleep(500); MotorDir(BREAK,BREAK); MotorSpeed(255,255); while(zeiger<limit) { if (zeiger & 1) StatusLED(YELLOW); else StatusLED(RED); MotorDir(FWD,RWD); Msleep(10); MotorDir(FREE,FREE); Msleep(100); LineData(data); if ((data[0]!=data_old[0]) || (data[1]!=data_old[1])) { d_l[zeiger]=data[0]; d_r[zeiger]=data[1]; data_old[0]=data[0]; data_old[1]=data[1]; zeiger++; } } MotorDir(BREAK,BREAK); MotorSpeed(0,0); FrontLED(OFF); Msleep(500); while(!PollSwitch()) { StatusLED(GREEN); Msleep(200); StatusLED(OFF); Msleep(600);} NewLine; NewLine; SerWrite("Gespeicherte Linedatas (10.3.2007)",34); NewLine; NewLine; for (zeiger=0; zeiger<limit; zeiger++) { NewLine; PrintInt(zeiger); Trenner; PrintInt(d_l[zeiger]); Trenner; PrintInt(d_r[zeiger]); } while(1); return 0; }
mic
Edit: Diagramm hinzugefügt.







 
			
			 
					
					
					
						 Zitieren
Zitieren
Lesezeichen