PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PollSwitch tast/programmier problem



SRT
02.02.2008, 09:03
Ich bin noch ganz am Anfang der Programmierung, und möchte dass ASURO nur gerade aus fährt. Und wenn er irgendwo dagegenfährt anhält.

Das Problem ist, er fährt gar nicht erst los. man hört zwar für nen Bruchteil einer Sekunde die beiden Motoren, und er fährt auch los, aber hält dann schon nach nem Millimeter. die PollSwitch Taster gingen beim Selbsttest noch. Hier is mein verwendeter Code:


#include "asuro.h"

unsigned char taste;
int main(void){
Init();
taste=PollSwitch();
MotorDir(FWD,FWD);
while (taste==0){
MotorSpeed(120,120);
StatusLED(GREEN);
taste=PollSwitch();}
MotorDir(BREAK,BREAK);
while(1);
return 0;
}


da ist doch dann offensichtlich ein Fehler drin, oder?

radbruch
02.02.2008, 11:22
Hallo SRT

Die von PollSwitch() gelieferten Werte sind nicht immer korrekt, deshalb sollte man die Taster mehrfach überprüfen:


#include "asuro.h"

unsigned char taste1, taste2;

int main(void){
Init();
MotorDir(FWD,FWD);
MotorSpeed(120,120);
StatusLED(YELLOW);

do
{
taste1=PollSwitch();
taste2=PollSwitch();
}
while((taste1==0) || (taste2==0));

MotorSpeed(0,0);
MotorDir(BREAK,BREAK);
StatusLED(RED);
while(1);
return(0);
}

Gruß

mic

Sim Robot
02.02.2008, 13:45
Mir ist etws augefallen.Namlich:

#include "asuro.h"

unsigned char taste;
int main(void){
Init();
taste=PollSwitch();
MotorDir(FWD,FWD);
--->while (taste==0){ <---//Anwiesung wiederholen bis taste==0
MotorSpeed(120,120);
StatusLED(GREEN);
taste=PollSwitch();}
MotorDir(BREAK,BREAK);
while(1);
return 0;
}

Bessr zu schreiben währe while(taster>0){.Oder irrre ich mich da???

radbruch
02.02.2008, 14:32
Oder irre ich mich da?
Solange keine Taste (taste==0) setze MotorSpeed(), mache StatusLED grün und lese neuen Tastenwert ein.

SRT
02.02.2008, 14:41
Danke für die Tipps. Er läuft, und läuft, und bei taster drücken steht er. thx