Hallo
Ich hab' das immer mit einem kleinen Testprogramm untersucht, Daten einlesen und zum PC senden, im Stillstand, also ohne Motor. Dann muss man zwar die Linie von Hand bewegen, aber das schadet ja nicht.
Blöderweise gibts dazu keinen Quellcode mehr, deshalb kann ich dir nur das .hex anbieten. Dafür funktioniert es so mit jeder Version der Lib die du verwendest. Mit K6/K5 kann man die FrontLED ein oder ausschalten. Datei ist im Anhang.
Mein Kreismessprogramm habe ich aber noch. Kannst du dir ja mal anschauen. Der asuro dreht sich über der Linie und merkt sich die Werte, am Ende sendet er sie dann zum PC:
Code:
#include "asuro.h"
#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]);
Trenner;
PrintInt(d_l[zeiger]+d_r[zeiger]);
Trenner;
PrintInt(d_l[zeiger]-d_r[zeiger]);
}
while(1) { StatusLED(RED); Msleep(200); StatusLED(OFF); Msleep(600);}
return 0;
}
Das benötigt allerdings eine asuro.c die schon PrintInt() und Msleep() kennt. Links dazu findest du im FileThread. (Um es nicht unnötig kompliziert zu machen, solltest du eine Version unter 2.7 wählen.)
Gruß
mic
Lesezeichen