so, jetzt habe ich ein paar daten zusammen. mit diesem programm aus dem asuro band II habe ich die daten aufgenommen:
Code:
//* -------- Programm zum Loggen der Odometriedaten ----*/
#include "asuro.h"
#include "inka.h"
#include <string.h>
#include<stdio.h>
int main(void) {
unsigned int data[200][2];
char c[12];
int i;
Init();
WaitforStart();
//motoren vorwärts
MotorDir(FWD,FWD);
MotorSpeed(160,160);
//warten bis motoren drehzahl erreicht haben
Msleep (1000);
//odo-werte einlesen
for (i=0; i<200;i++) {
OdometrieData(data[i]);
}
//motoren stop
MotorSpeed(0,0);
//formatiert ausgabe odo-werte
for (i=0;i<200;i++){
sprintf(c,"%4d\t%4d\n\r",data[i][0],data[i][1]);
SerWrite(c,12);
}
while(1);
return 0;
}
so sehen die daten der 22er scheiben aus:
Code:
35 22
25 21
31 26
20 24
19 31
20 32
21 71
28 407
29 617
43 643
313 624
599 501
646 273
644 43
485 28
125 37
33 22
24 23
27 21
20 22
31 27
21 25
27 31
28 32
32 86
111 438
478 628
626 649
635 626
637 490
475 237
135 39
32 28
26 33
27 22
21 23
25 22
21 22
35 29
28 28
39 39
224 222
546 586
631 673
632 648
530 500
194 252
41 38
26 27
30 28
22 21
21 31
26 21
26 30
35 25
58 27
428 35
600 62
632 409
626 637
518 659
198 549
32 351
31 66
24 30
27 29
24 22
31 26
28 21
34 33
172 22
500 31
634 26
647 29
588 39
311 164
39 501
28 641
24 655
26 596
21 470
27 230
24 36
35 32
36 25
244 27
536 21
652 30
653 22
633 29
427 25
48 28
39 38
24 174
23 536
20 643
20 658
25 639
24 564
31 366
38 86
301 34
575 25
669 27
656 21
492 34
82 23
29 31
29 28
22 33
30 102
20 476
28 628
24 623
26 493
36 227
128 39
496 28
642 24
647 26
518 21
167 26
32 23
25 33
25 26
20 38
24 48
20 401
35 625
28 634
46 507
314 280
586 50
638 29
601 31
330 23
34 21
31 24
24 21
23 27
21 24
20 36
25 32
24 71
34 386
48 630
437 685
634 696
597 645
303 503
34 289
30 38
22 31
24 25
18 22
24 24
20 20
23 26
26 22
36 30
250 28
571 39
625 76
417 452
44 641
28 655
31 578
20 400
20 161
22 32
20 31
27 24
26 22
38 24
165 22
547 27
653 24
649 32
455 34
57 212
33 535
24 648
27 646
20 587
27 423
22 160
24 42
30 27
34 29
217 21
561 20
648 24
495 22
93 29
28 27
24 37
24 70
19 447
23 597
das ist der letzter code des versuches mit go und turn. Mit der 3fachen ausführung des turn erreiche ich fast 90°, wie ihr sehen könnt, experimentiere ich weiter
Code:
#include "asuro.h"
#include "inka.h"
int i;
int main (void)
{
Init();
WaitforStart();
EncoderInit ();
for (i = 0; i < 4; i++)
{
StatusLED(YELLOW);
Go(100,150);
StatusLED(GREEN);
Msleep(500);
Turn(75,150);
Turn(75,150);
Turn(75,150);
StatusLED(RED);
Msleep(500);
}
return 0;
}
Kannst du mal von deinem letzten Programm (von hier) mal die Datei *.lss posten.
Darin ist dann das komplette Programm in Assembler zu finden. Ich will mal sehen, was für eine Mathematik (char, int, float) in der Funktion Turn() und auch Go() vom Compiler eingesetzt werden. Hier scheint es ja irgendwie Unterschiede zu geben.
*.lss habe ich leider nicht gefunden, arbeite mit avr-studio: eep, elf, hex, o, o.d, zumindest i projektverzeichnis...
ansonsten, rote zahnräder habe ich genug, wer möchte ein paar? ein problem wird die lichtschranke...
Lesezeichen