Hallo
Die PollSwitch()-Funktion "lügt" häufig, vor allem wenn die Tasten bei laufenden Motoren abgefragt werden. Die Chance dass ein falscher Wert genau 0 oder 32 ist ist bedeutend geringer als ein falscher Wert ==32 oder != 32.
Mehrfachabfrage der Tasten bei Motorstörungen:
GrußCode:#include "asuro.h" #define FULL_L 80 #define FULL_R 60 /* vorwärts */ void MotorFwd(void) { MotorDir(FWD,FWD); MotorSpeed(FULL_L,FULL_R); } /* rückwärts */ void MotorRwd(void) { MotorDir(RWD,RWD); MotorSpeed(FULL_L,FULL_R); } /* bremsen */ void MotorStop(void) { MotorSpeed(0,0); } int main(void) { char t1, t2; Init(); while(1) { t1=PollSwitch(); t2=PollSwitch(); if((t1==t2) && (t2==0)) { MotorDir(FWD,FWD); MotorSpeed(65,255); } if((t1==t2) && (t2==32)) { MotorDir(FWD,FWD); MotorSpeed(100,200); } if((t1==t2) && (t2==33)) { MotorDir(RWD,RWD); MotorSpeed(255,255); Msleep(1000); } if((t1==t2) && (t2!=32)) { MotorDir(RWD,RWD); MotorSpeed(255,255); Msleep(1000); } } }
mic







Zitieren

Lesezeichen