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:
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
(erste Messung mit FrontLED aus)
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):
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;
}
Gruß
mic
Edit: Diagramm hinzugefügt.
Lesezeichen