Hi,
ich nehme mal an, dass es sich um das klassische Tasterproblem handelt. Wird mehrmals monatlich angefragt. Einfach mal ins Forum schauen.Zitat von Nighthawk91
Hope it helps,
Mucki
ich habe ein programm geschrieben, mit dem der asuro wenn er gegen ein hindernis fährt einfach um dreht, aber manchmal dreht er ohne jeden erkennbaren grund um ich glaube, dass ein wackelkontakt ist, denn das programm sollte eigentlich nur starten, wenn einer der taster gedrückt ist, man kann dafür den asuro aber auch einfach schütteln, ich weiß nur nicht, wo sich dieser wackelkontakt befinden könnte!?
falls es doch am programm liegen könnte:
Code:#include "asuro.h" int main(void) { Init(); FrontLED(ON); StatusLED(RED); BackLED(ON,ON); while(PollSwitch()==0) { MotorDir(FWD,FWD); MotorSpeed(0,0);} StatusLED(GREEN); BackLED(OFF,OFF); FrontLED(OFF); Msleep(600); /*________*/ while(1) { if(PollSwitch()==0) { while(PollSwitch()==0) { StatusLED(GREEN); MotorSpeed(255,255); MotorDir(RWD,RWD); } } if(PollSwitch() > 0) { StatusLED(YELLOW); MotorSpeed(255,255); MotorDir(RWD,FWD); Msleep(600); MotorSpeed(0,0); } } while (1); return 0; }
-
Hi,
ich nehme mal an, dass es sich um das klassische Tasterproblem handelt. Wird mehrmals monatlich angefragt. Einfach mal ins Forum schauen.Zitat von Nighthawk91
Hope it helps,
Mucki
ich finde leider nichts, auch nicht mit der boardsuche
-
ja es scheint wirklich das normale tasterproblem zu sein. dieses problem (und das der odometrie) sind wohl die meistdiskutierten im forum.
ausserdem fragst du doppelt ab, ob PollSwitch() = 0 ist. einmal mit der if-schleife und einmal mit der while-schleife. wozu?
irgendwie hat das nicht funktioniert:
wen 0 forwärts
also hab ich geschrieben
wenn null vorwärts bis nicht mehr 0
-
versuch das mal
mein linker motor geht leider nicht rückwerts deswegen kann ich es nicht ausprobierenCode:#include "asuro.h" /* Um eventuelle Unterschiede zwischen linken und rechtem Motor auszugleichen * definieren wir 2 Werte für fullspedd links und rechts */ #define FULL_L 250 /* Fullspeed linker Motot */ #define FULL_R 220 /* Fullspeed rechter Motor */ /* Motor vorwärts */ void MotorFwd(void) { MotorDir(FWD,FWD); MotorSpeed(FULL_L,FULL_R); } /* Motor rückwärts */ void MotorRwd(void) { MotorDir(RWD,RWD); MotorSpeed(FULL_L,FULL_R); } /* Motor rückwärts Links */ void MotorRwdL(void) { MotorDir(RWD,RWD); MotorSpeed(FULL_L,0); } /* Motor rückwärts Rechts */ void MotorRwdR(void) { MotorDir(RWD,RWD); MotorSpeed(0, FULL_R); } /* Motor stop */ void MotorStop(void) { MotorSpeed(0,0); } int main(void) { unsigned char t1, t2; Init(); while(1) { t1 = PollSwitch(); t2 = PollSwitch(); if(t1 == 0 && t2 == 0) /* keine Taste */ { MotorFwd(); /* vorwärts fahren */ FrontLED(ON); BackLED(OFF,OFF); } else if (t1 && t2 && t1 == t2) { MotorStop(); if(t1 & 0x07) /* Tasten links gedrückt? */ { MotorRwdL(); /* Rückwärtskurve links fahren */ FrontLED(OFF); BackLED(ON,OFF); } if (t1 & 0x38) /* Tasten rechts gedrückt? */ { MotorRwdR(); /* Rückwärtskurve rechts fahren */ FrontLED(OFF); BackLED(OFF,ON); } Msleep(1000); /* 1 Sekunde fahren */ } } return 0; }
Lesezeichen