das programm fährt also vorwärts, und wenn der asuro anstößt, wird ein eine bestimmt reichtung ausgewichen.Code:#include "asuro.h" //Die definitionen werden eingebunden /* Um eventuelle Unterschiede zwischen linken und rechtem Motor auszugleichen * definieren wir 2 Werte für fullspeed links und rechts */ #define FULL_L 250 /* Fullspeed linker Motor */ #define FULL_R 250 /* Fullspeed rechter Motor */ /* Motor vorwärts */ void MotorFwd(void) //immer wenn diese funktion im programm aufgerufen wird,... { MotorDir(FWD,FWD); //...werden die motoren auf vorwärts gestellt MotorSpeed(150,150); //...und auf 150 } /* Motor rückwärts */ void MotorRwd(void) //bei dieser funktion.. { MotorDir(RWD,RWD);//gehts rückwärts MotorSpeed(50,50);//mit 50 } /* Motor rückwärts links */ void MotorRwdL(void) //bei dieser funktion... { MotorDir(RWD,RWD);//gehts rückwärts MotorSpeed(175,100);//und zwar links schneller als rechts (kurve) } /* Motor rückwärts rechts */ void MotorRwdR(void) //hier nochmal das gleiche nur andersrum { MotorDir(RWD,RWD); MotorSpeed(100, 175); } /* Motor stop */ void MotorStop(void) //bei dieser funktion... { MotorSpeed(0,0); //werden die motoren angehalten } int main(void) //DIES HIER IST DAS HAUPTPROGRAMM { unsigned char t1, t2; Init(); //"start deas asuro" while(1) //endlosschleife { t1 = PollSwitch(); //in t1 wird der tasterwert gespeichert (siehe einen post höher) t2 = PollSwitch(); //in t2 auch, um fehler zu vermeiden if(t1 == 0 && t2 == 0) wenn der wert null ist, also kein taster gedrückt wurde... { MotorFwd(); //dann vorwärts fahren FrontLED(ON); //und licht anmachen BackLED(OFF,OFF); //hintan licht ausmachen } else if (t1 && t2 && t1 == t2) //wenn der wert nicht null ist,... { MotorStop(); //erstmal anhalten if(t1 & 0x07) // wenns die linken tatsen sind... { MotorRwdL(); /* Rückwärtskurve links fahren */ FrontLED(OFF); BackLED(ON,OFF); } if (t1 & 0x38) //wenns die rechten tasten sind... { MotorRwdR(); /* Rückwärtskurve rechts fahren */ FrontLED(OFF); BackLED(OFF,ON); } Msleep(750); /* zeit zum rückwärtsfahren egal ob links oder rechts Msleep(1000) = 1sekunde*/ } } return 0; }
Lesezeichen