Hab jetzt mal ein Programm geschrieben, bei dem er zuerst einfach der Linie folgen soll und nach einem Tastendruck dann den 2ten Teil des Programms ausführen soll, also auf Kollisionsfahrt gehen.
Habe jetzt nur Problem, das ich das mit dem bis zu Tastendruck irgendwie nicht hinbekomme, lest es euch bitte mal durch un schlagt mal vor wie es gehen müsste. Danke.
Code:
#include "asuro.h"
int main(void){
unsigned int data[2], i;
unsigned char b1, b2, taste;
Init();
FrontLED(ON);
MotorDir(FWD,FWD);
MotorSpeed(255,255);
taste = PollSwitch();
/*Linienfolger bis Tastendruck*/
while(taste == 0){
LineData(data);
if ((data [0] < 20) && (data [1] > 20 )){
MotorDir(RWD,FWD);
MotorSpeed(0,255);
BackLED(OFF,ON);
StatusLED(RED);
}
if ((data [1] < 20) && (data [0] > 20 )){
MotorDir(FWD,RWD);
MotorSpeed(255,0);
BackLED(ON,OFF);
StatusLED(RED);
}
if ((data [1] < 20) && (data [0] < 20 )){
MotorDir(FWD,FWD);
MotorSpeed(255,255);
BackLED(ON,ON);
StatusLED(GREEN);
}
}
FrontLED(OFF);
MotorSpeed(0,0);
for (i=0;i<1024;i++){Sleep(255);}
/*Kollision bis zum bitteren Ende*/
while (1){
b1 = PollSwitch();
b2 = PollSwitch();
if (b1 == 0 && b2 == 0){
MotorDir(FWD,FWD);
MotorSpeed(255,255);
BackLED(OFF,OFF);
StatusLED(GREEN);
}
else if (b1 && b2 && b1 == b2){
MotorDir(BREAK,BREAK);
if (b1 > 7){
MotorDir(RWD,RWD);
MotorSpeed(100,255);
BackLED(ON,OFF);
StatusLED(RED);
}
if (b1 < 8){
MotorDir(RWD,RWD);
MotorSpeed(255,100);
BackLED(OFF,ON);
StatusLED(RED);
}
for (i=0;i<200;i++){Sleep(255);}
}
}
return 0;
}
Lesezeichen