natalie
27.12.2005, 12:03
hallo,zusammen
zuerst frohe Weihnachten.
ich habe ein programm zur Messung der Geschwindigkeit bzw. der Winkelgeschwindigkeit der Räder geschrieben.eigentlich wollte ich durch das Terminalprogramm den Wert der Geschwindigkeit bzw. der Winkelgeschwindigkeit der Räder lesen mit Hilfe der Encoder-Funktion.Aber steht in Terminalprogramm immer unbekannte Zeichen.
kann jemand mir mal helfen?ich brauche die Werte dringend #-o #-o
#include "asuro.h"
int fahrgeradeaus(unsigned char MotorDr)
{
Encoder_Init();
int sl=150,sr=150;
int drehungl,drehungr;
unsigned char rl,rr,weg,wl,wr;
Encoder_Set(0,0);
MotorSpeed(sl,sr);
MotorDir(MotorDr,MotorDr);
SerWrite("\n\r encoder links,rechts",23);
PrintInt(encoder[LEFT]);
PrintInt(encoder[RIGHT]);
SerWrite("\n\r spdeed links,rechts",22);
PrintInt(sl);
PrintInt(sr);
drehungl=encoder[LEFT]/(12*5);
drehungr=encoder[RIGHT]/(12*5);
rl=drehungl*12;
rr=drehungr*12;
weg=(rl+rr)/2;
wl=sl/1.9;
wr=sr/1,9;
SerWrite("\n\r fahrweg",10);
PrintInt(weg);
SerWrite("\n\r wl,wr",8);
PrintInt(wl);
PrintInt(wr);
if(encoder[RIGHT]<encoder[LEFT])
{
if(sr<=254) sr++; else sl--;
}
if(encoder[RIGHT]>encoder[LEFT])
{
if(sl<=254) sl++; else sr--;
}
if(encoder[RIGHT]==encoder[LEFT])
{
sl=sr;
}
return 0;
}
int fahrdrehung( int winkel, unsigned char Dir)
{
Encoder_Init();
int segmentsl=0,segmentsr=0,i;
int sl=150,sr=150,drehungl,drehungr;
unsigned char MotorDrl=FWD,MotorDrr=RWD,rl,rr,weg,wl,wr;
if (winkel == 45)
{
segmentsl = 21;
segmentsr = 21;
}
else if (winkel == 90)
{
segmentsl = 41;
segmentsr = 41;
}
else if (winkel == 180)
{
segmentsl = 82;
segmentsr = 82;
}
else if (winkel == 270)
{
segmentsl = 124;
segmentsr = 124;
}
else if (winkel == 360)
{
segmentsl = 165;
segmentsr = 165;
}
else
{
StatusLED(RED);
}
Encoder_Set(0,0);
if(Dir == RIGHT)
{
MotorDrl = FWD;
MotorDrr = RWD;
}
if(Dir == LEFT)
{
MotorDrl = RWD;
MotorDrr = FWD;
}
while((encoder[LEFT] < segmentsl) && (encoder[RIGHT] < segmentsr))
{
MotorDir(MotorDrl,MotorDrr);
MotorSpeed(sl,sr);
if(encoder[LEFT] >= segmentsl)
{
sl = 0;
}
if(encoder[RIGHT] >= segmentsr)
{
sr = 0;
}
if(encoder[LEFT]>=segmentsl && encoder[RIGHT] >= segmentsr)
{
MotorDir(BREAK, BREAK);
for(i=0;1<=100;i++) Sleep(255);
MotorSpeed(0,0);
}
SerWrite("\n\r encoder links,rechts",23);
PrintInt(encoder[LEFT]);
PrintInt(encoder[RIGHT]);
SerWrite("\n\r spdeed links,rechts",22);
PrintInt(sl);
PrintInt(sr);
drehungl=encoder[LEFT]/(12*5);
drehungr=encoder[RIGHT]/(12*5);
rl=drehungl*12;
rr=drehungr*12;
weg=(rl+rr)/2;
wl=sl/1.9;
wr=sr/1,9;
SerWrite("\n\r fahrweg",10);
PrintInt(weg);
SerWrite("\n\r wl,wr",8);
PrintInt(wl);
PrintInt(wr);
}
return 0;
}
int main(void)
{
Init();
int j;
unsigned char taste;
StatusLED(GREEN);
while(1)
{
MotorDir(FWD,FWD);
MotorSpeed(150,150);
fahrgeradeaus(FWD);
taste = PollSwitch();
PrintInt(taste);
if(taste == 0)
{
fahrgeradeaus(FWD);
}
if (taste > 7 && taste < 60 && taste != 12 && taste != 18 && taste != 30)
{
fahrdrehung(45, RIGHT);
}
if (taste > 0 && taste < 8)
{
fahrdrehung(45, LEFT);
}
if (taste == 12 || taste == 18 || taste == 30)
{
for(j=0;j<=50;j++)
{
fahrgeradeaus(RWD);
}
}
}
return 0;
}
vielen Dank für eure Hilfe
natalie
zuerst frohe Weihnachten.
ich habe ein programm zur Messung der Geschwindigkeit bzw. der Winkelgeschwindigkeit der Räder geschrieben.eigentlich wollte ich durch das Terminalprogramm den Wert der Geschwindigkeit bzw. der Winkelgeschwindigkeit der Räder lesen mit Hilfe der Encoder-Funktion.Aber steht in Terminalprogramm immer unbekannte Zeichen.
kann jemand mir mal helfen?ich brauche die Werte dringend #-o #-o
#include "asuro.h"
int fahrgeradeaus(unsigned char MotorDr)
{
Encoder_Init();
int sl=150,sr=150;
int drehungl,drehungr;
unsigned char rl,rr,weg,wl,wr;
Encoder_Set(0,0);
MotorSpeed(sl,sr);
MotorDir(MotorDr,MotorDr);
SerWrite("\n\r encoder links,rechts",23);
PrintInt(encoder[LEFT]);
PrintInt(encoder[RIGHT]);
SerWrite("\n\r spdeed links,rechts",22);
PrintInt(sl);
PrintInt(sr);
drehungl=encoder[LEFT]/(12*5);
drehungr=encoder[RIGHT]/(12*5);
rl=drehungl*12;
rr=drehungr*12;
weg=(rl+rr)/2;
wl=sl/1.9;
wr=sr/1,9;
SerWrite("\n\r fahrweg",10);
PrintInt(weg);
SerWrite("\n\r wl,wr",8);
PrintInt(wl);
PrintInt(wr);
if(encoder[RIGHT]<encoder[LEFT])
{
if(sr<=254) sr++; else sl--;
}
if(encoder[RIGHT]>encoder[LEFT])
{
if(sl<=254) sl++; else sr--;
}
if(encoder[RIGHT]==encoder[LEFT])
{
sl=sr;
}
return 0;
}
int fahrdrehung( int winkel, unsigned char Dir)
{
Encoder_Init();
int segmentsl=0,segmentsr=0,i;
int sl=150,sr=150,drehungl,drehungr;
unsigned char MotorDrl=FWD,MotorDrr=RWD,rl,rr,weg,wl,wr;
if (winkel == 45)
{
segmentsl = 21;
segmentsr = 21;
}
else if (winkel == 90)
{
segmentsl = 41;
segmentsr = 41;
}
else if (winkel == 180)
{
segmentsl = 82;
segmentsr = 82;
}
else if (winkel == 270)
{
segmentsl = 124;
segmentsr = 124;
}
else if (winkel == 360)
{
segmentsl = 165;
segmentsr = 165;
}
else
{
StatusLED(RED);
}
Encoder_Set(0,0);
if(Dir == RIGHT)
{
MotorDrl = FWD;
MotorDrr = RWD;
}
if(Dir == LEFT)
{
MotorDrl = RWD;
MotorDrr = FWD;
}
while((encoder[LEFT] < segmentsl) && (encoder[RIGHT] < segmentsr))
{
MotorDir(MotorDrl,MotorDrr);
MotorSpeed(sl,sr);
if(encoder[LEFT] >= segmentsl)
{
sl = 0;
}
if(encoder[RIGHT] >= segmentsr)
{
sr = 0;
}
if(encoder[LEFT]>=segmentsl && encoder[RIGHT] >= segmentsr)
{
MotorDir(BREAK, BREAK);
for(i=0;1<=100;i++) Sleep(255);
MotorSpeed(0,0);
}
SerWrite("\n\r encoder links,rechts",23);
PrintInt(encoder[LEFT]);
PrintInt(encoder[RIGHT]);
SerWrite("\n\r spdeed links,rechts",22);
PrintInt(sl);
PrintInt(sr);
drehungl=encoder[LEFT]/(12*5);
drehungr=encoder[RIGHT]/(12*5);
rl=drehungl*12;
rr=drehungr*12;
weg=(rl+rr)/2;
wl=sl/1.9;
wr=sr/1,9;
SerWrite("\n\r fahrweg",10);
PrintInt(weg);
SerWrite("\n\r wl,wr",8);
PrintInt(wl);
PrintInt(wr);
}
return 0;
}
int main(void)
{
Init();
int j;
unsigned char taste;
StatusLED(GREEN);
while(1)
{
MotorDir(FWD,FWD);
MotorSpeed(150,150);
fahrgeradeaus(FWD);
taste = PollSwitch();
PrintInt(taste);
if(taste == 0)
{
fahrgeradeaus(FWD);
}
if (taste > 7 && taste < 60 && taste != 12 && taste != 18 && taste != 30)
{
fahrdrehung(45, RIGHT);
}
if (taste > 0 && taste < 8)
{
fahrdrehung(45, LEFT);
}
if (taste == 12 || taste == 18 || taste == 30)
{
for(j=0;j<=50;j++)
{
fahrgeradeaus(RWD);
}
}
}
return 0;
}
vielen Dank für eure Hilfe
natalie