Hier mal ein paar Codes von mir:
Linienverfolgung:
Code: Alles auswählen
#include "asuro.h"
int main(void) {
unsigned int data[2];
unsigned char links,rechts;
int diffl,diffr;
Init();
FrontLED(ON);
MotorDir(FWD,FWD);
while(1) {
LineData(data);
diffl=data[0]-data[1];
diffr=data[1]-data[0];
links=120-(diffr*3);
rechts=120-(diffl*3);
if (links>120) {links=120;}
if (rechts>120) {rechts=120;}
MotorSpeed(links,rechts);
}
return 0;
}
Einfach nur rumfahren und bei Anstossen rumdrehen:
Code: Alles auswählen
#include "asuro.h"
unsigned int taste;
int main(void) {
Init();
while(1) {
taste=PollSwitch();
switch(taste) {
case 1: BackLED(ON,ON);
case 2: MotorSpeed(200,200);MotorDir(RWD,RWD);Msleep(200);MotorDir(FWD,RWD);Msleep(400);break;
case 4: MotorSpeed(200,200);MotorDir(RWD,RWD);Msleep(200);MotorDir(FWD,RWD);Msleep(400);break;
case 8: MotorSpeed(200,200);MotorDir(RWD,RWD);Msleep(200);MotorDir(RWD,FWD);Msleep(400);break;
case 16: MotorSpeed(200,200);MotorDir(RWD,RWD);Msleep(200);MotorDir(RWD,FWD);Msleep(400);break;
case 31: MotorSpeed(200,200);MotorDir(RWD,RWD);Msleep(200);MotorDir(BREAK,RWD);Msleep(250);break;
default: MotorDir(FWD,FWD);MotorSpeed(160,160);BackLED(OFF,OFF);break;
}
}
}
Odometrie mit Tasten:
Code: Alles auswählen
#include "asuro.h"
int main(void) {
unsigned int odo_max_l,odo_max_r,odo_min_l,odo_min_r,odo_mitte_l,odo_mitte_r,data[2];
unsigned char auf_l,auf_r,speed,speed_wert,speed_l,speed_r,zaehler_l,zaehler_r,schwing,rueckw,dreh_l,dreh_r,taste;;
unsigned long dauer1,dauer2;
Init();
MotorDir(FWD,FWD);
auf_r=auf_l=0;
zaehler_r=zaehler_l=rueckw=dreh_l=dreh_r=0;
odo_max_l=odo_max_r=odo_min_l=odo_min_r=300;
speed=120;
speed_l=speed_r=speed;
speed_wert=(speed/20);
MotorSpeed(speed_l,speed_r);
while(1) {
for(schwing=0;schwing<30;schwing++) {
dauer1=Gettime();
odo_max_l--;
odo_max_r--;
odo_min_l++;
odo_min_r++;
OdometrieData(data);
if (data[0]>odo_max_l) {odo_max_l=data[0];}
if (data[1]>odo_max_r) {odo_max_r=data[1];}
if (data[0]<odo_min_l) {odo_min_l=data[0];}
if (data[1]<odo_min_r) {odo_min_r=data[1];}
odo_mitte_l=(odo_max_l+odo_min_l)/2;
odo_mitte_r=(odo_max_r+odo_min_r)/2;
if ((auf_l==0) && (data[0]>(odo_mitte_l+5))) {
auf_l=1;
zaehler_l++;
}
else if ((auf_l==1) && (data[0]<(odo_mitte_l-5))) {
auf_l=0;
}
if ((auf_r==0) && (data[1]>(odo_mitte_r+5))) {
auf_r=1;
zaehler_r++;
}
else if ((auf_r==1) && (data[1]<(odo_mitte_r-5))) {
auf_r=0;
}
dauer2=Gettime();
while ((dauer1+5)>dauer2) {dauer2=Gettime();}
}
if (zaehler_l<speed_wert) {speed_l=speed_l+speed_wert;}
else if (zaehler_l>speed_wert) {speed_l=speed_l-speed_wert;}
if (zaehler_r<speed_wert) {speed_r=speed_r+speed_wert;}
else if (zaehler_r>speed_wert) {speed_r=speed_r-speed_wert;}
zaehler_l=zaehler_r=0;
if (PollSwitch()>0) {
taste=PollSwitch();
if (taste==1) {dreh_l=(800/speed);}
if ((taste==2) || (taste==4)) {dreh_r=(1200/speed);}
if (taste==31) {dreh_r=(800/speed);}
if ((taste==8) || (taste==16)) {dreh_l=(1200/speed);}
}
if (dreh_l>0) {
MotorDir(RWD,BREAK);
dreh_l--;
speed_r=speed_r-speed_wert;
}
else if (dreh_r>0) {
MotorDir(BREAK,RWD);
dreh_r--;
speed_l=speed_l-speed_wert;
}
else {
MotorDir(FWD,FWD);
}
MotorSpeed(speed_l,speed_r);
}
return 0;
}
Bin mal auf eure Programme gespannt
Grüsse,
Gerry
Als Trottel dazustehen, wäre heutzutage nicht weiter auffallend.
Denn wer in einem gewissen Alter nicht merkt, daß er von Dummköpfen umgeben ist,
merkt es aus einem gewissen Grund nicht.
( Curt Goetz 17.11.1888 – 12.09.1960 )