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;
}
das programm fährt also vorwärts, und wenn der asuro anstößt, wird ein eine bestimmt reichtung ausgewichen.
Lesezeichen