soo wolln wir uns das mal ansehen.
#include "asuro.h"
int main(void)
{
Init();
if(PollSwitch()==0){ Warum die if schleife? die while schleife prüft doch schon ob PollSwitch gleich null ist...
while(PollSwitch()==0){ soweit in ordnung... solange kein taster gedrückt, fahre gerade aus
MotorDir(FWD,FWD);
MotorSpeed(150,150);
StatusLED(GREEN);
}
MotorDir(BREAK,BREAK); sooo... wenn eine taste gedrückt wurde (und die while schleife von oben abgebrochen wurde) dann halte an, warte 666millisekunden, und fahre rückwärts.
MotorSpeed(0,0);
Msleep(666);
MotorDir(RWD,RWD);
MotorSpeed(100,100);
ab hier...
}
else{
MotorDir(BREAK,BREAK);
MotorSpeed(0,0);
StatusLED(RED);
SerWrite("Hinderniss!\n",11);
}
bis hier, dieser code wird nicht gebraucht. schliesslich sind ja schon beide möglichkeiten geschreiben worden da oben.
} diese klammer markiert das ende der main funktion
also lässt sich der code auf folgendes reduzieren:
Code:
#include "asuro.h"
int main(void){
Init();
while(PollSwitch()==0){
MotorDir(FWD,FWD);
MotorSpeed(150,150);
StatusLED(GREEN);
}
MotorDir(BREAK,BREAK);
MotorSpeed(0,0);
Msleep(666);
MotorDir(RWD,RWD);
MotorSpeed(100,100);
}
ausserdem gibt es noch ein problem:
die Funktion PollSwitch() gibt immer mal wieder falsche werte zurück, deshlab sollte sie immer mehrfach abgefragt werden, bevor du damit arbeitest. du könntest z.B. am beginn deines programms (hinter init()
folgendes einbauen:
Code:
for(int k=0;k<10;k++){
PollSwitch();
}
einfügen.
gerade am beginn eines programms sind die werte von pollswitch meistens falsch.
Lesezeichen