Hallo
Ich habe deinen Beitrag in einen neuen Thread verschoben und dein Programm etwas umgestellt:
Ich habe es aber nicht getestet.Code:#include "asuro.h" unsigned int data[2]; //Speicher bereitstellen unsigned char t1, t2; /* Motor vorwärts */ void MotorFwd(void) { MotorDir(FWD,FWD); MotorSpeed(150,150); } /* Motor rückwärts */ void MotorRwd(void) { MotorDir(RWD,RWD); MotorSpeed(160,150); } /* Motor rückwärts Links */ void MotorRwdL(void) { MotorDir(RWD,FWD); MotorSpeed(150,140); } /* Motor rückwärts Rechts */ void MotorRwdR(void) { MotorDir(FWD,RWD); MotorSpeed(140,150); } /* Motor stop */ void MotorStop(void) { MotorSpeed(0,0); } int main(void) { Init(); StatusLED(RED); SerWrite("HALLO-Los geht´s!!!\n\r",21); FrontLED(ON); // Linienbeleuchtung einschalten MotorDir(FWD,FWD); // Beide Motoren auf vorwärts while(1) { // Endlosschleife, ASURO soll beliebig lang einer Linie nachfahren LineData(data); // aktuelle Helligkeitswerte der Fototransistoren einlesen if (data[0] > data[1] ) // links heller als rechts... {MotorSpeed(200,150);} // ... dann links mehr Gas geben... else {MotorSpeed(150,200);} // ... sonst rechts mehr Gas geben! t1 = PollSwitch(); t2 = PollSwitch(); if((t1 == 0) && (t2 == 0)) /* keine Taste */ { MotorFwd(); /* vorwärts fahren */ FrontLED(ON); BackLED(OFF,OFF); } else if (t1 && (t1 == t2)) { MotorStop(); Msleep(300); if(t1 & 0x07) /* Tasten links gedrückt? 0b00000111 */ { MotorRwdL(); /* Rückwärtskurve links fahren */ FrontLED(OFF); BackLED(ON,OFF); } if (t1 & 0x38) /* Tasten rechts gedrückt? 0b00111000*/ { MotorRwdR(); /* Rückwärtskurve rechts fahren */ FrontLED(OFF); BackLED(OFF,ON); } Msleep(1000); /* 1 Sekunde fahren */ } } return 0; }
Gruß
mic







Zitieren

Lesezeichen