Könnte doch an dem taster liegen. Oder eigentlich an dem motoren. PollSwitch wird einfach die falsche wert geben wenn es mit drehende motoren angerufen wirdt. Es ist etwas störungsempfindlich.
Bitte versuch das mit:
Code:
#include "asuro.h"
int main(void)
{
Init();
unsigned char taste;
int i;
StatusLED(OFF);
MotorDir(FWD,FWD);
while(1){
taste=PollSwitch();
if(taste==PollSwitch()){ /* Alte tastermessung vergleichen mit neue; nicht gleich den warscheinlich nicht angeprellt */
Statusled(RED); /* Boem!, gehe im ruckfahrt */
MotorDir(RWD,RWD); /* nur ein mal drehrichtung einstellen */
MotorSpeed(100,100); /* nur ein mal geschwindigkeit einstellen */
for(i=0;i<300;i++){ /* 300 mal ... */
Sleep(10); } /* ... 10/36000 sekunden warten */
/* 3000/36000=1/12 sekunde später nach die letzte Motorspeed */
MotorDir(BREAK,RWD); /* nur ein mal drehrichtung einstellen */
MotorSpeed(0,125); /* nur ein mal geschwindigkeit einstellen */
for(i=0;i<1000;i++){ /* 1000 mal ... */
Sleep(10); } /* ... 10/36000 sekunden warten */
/* 10000/36000 = 1/3.6 sekunden später nach die letzte MotorSpeed(0,125) */
StatusLED(OFF); /* Fertig mit ruckfahrt */
} /* ende if: irgend einer 'taster' bemerkt */
else {
StatusLED(GREEN); /* Alles gut, gehe vorraus. */
MotorDir(FWD,FWD);
MotorSpeed(200,200);
for(i=0;i<300;i++){ /* 300 mal ... */
Sleep(10); } /* ... 10/36000 sekunden warten */
/* sonnst könntest du die grünne led kaum aufmerken */
} /* ende else: kein taster, las StatusLED grün */
} /* ende while(1), sollte er nicht passieren */
return 0;
}
Dazu noch einer tip. Du schaltest die Statusled ab am start deines program. Am ende von der ruckfahrt (beim eingeprellte tastern) setzt du es auf rot. Aber es geht nie wieder aus oder auf grun. Wurde es nicht besser sein wann Asuro dich erzählst wan er mit den ruckfärht beschäftigt (statusled rot), und wan er versucht weiter zu fahren (statusled grün). Dan kannst du auch sehen ob er ein 'pfantom'-taster bemerkt hat.
Du könntest es auch erweiteren mit den BackLEDs, womit du den 2 fasen von den ruckfährt deutlich macht. Habe das schon in den code eingefugt.
Lesezeichen