Hallo
Mein Ansatz für das Anstossproblem dieser Tage und der Versuch einer zuverlässigen Tastenabfrage sieht so aus:
Die Tasten werden 3x abgefragt und bei Gleichheit als gültig gewertet.Code:/* asuro fährt nach Anstoss einstellbare Zeit drehend(!) zurueck mic 4.1.2007 */ #include <asuro.h> unsigned long zurueckzeit; // Zeit Rueckwaerts in Millisekunden unsigned char sw,sw0,sw1,sw2; // Zwischenspeicher für Schalter k1-k6 int main(void) { Init(); zurueckzeit=0; // vorwärts losfahren MotorDir(FWD,FWD); MotorSpeed(150,150); BackLED(OFF,OFF); /* Achtung! Das funzt nur wenn die Taster richtig erkannt werden! */ do { sw0=PollSwitch(); // Schalter einlesen und für eine Runde speichern sw1=PollSwitch(); sw2=PollSwitch(); if ((sw0==sw1) && (sw0==sw2)) sw=sw0; else sw=0; if (!zurueckzeit && (sw==32)) { zurueckzeit=Gettime()+750; // Aktuelle Zeit plus x millisek. zurueck MotorSpeed(0,0); MotorDir(RWD,RWD); MotorSpeed(90,150); BackLED(ON,OFF); } if (!zurueckzeit && (sw==16)) { zurueckzeit=Gettime()+1500; // Aktuelle Zeit plus x millisek. zurueck MotorSpeed(0,0); MotorDir(RWD,RWD); MotorSpeed(90,150); BackLED(ON,OFF); } if (!zurueckzeit && (sw==2)) { zurueckzeit=Gettime()+1500; // Aktuelle Zeit plus x millisek. zurueck MotorSpeed(0,0); MotorDir(RWD,RWD); MotorSpeed(150,90); BackLED(OFF,ON); } if (!zurueckzeit && (sw==1)) { zurueckzeit=Gettime()+750; // Aktuelle Zeit plus x millisek. zurueck MotorSpeed(0,0); MotorDir(RWD,RWD); MotorSpeed(150,90); BackLED(OFF,ON); } if (zurueckzeit && (Gettime() > zurueckzeit)) { // Lange genug zurueck? zurueckzeit=0; MotorSpeed(0,0); MotorDir(FWD,FWD); MotorSpeed(150,150); BackLED(OFF,OFF); } }while (1); // mainloop (Endlosschleife) return 0; }
Die Funktionen der Tasten:
k1(Wert1): asuro fährt kurze Zeit rückwärts drehend rechts mit BackLED
k2(Wert2): asuro fährt lange Zeit rückwärts drehend rechts mit BackLED
k5(Wert16): asuro fährt lange Zeit rückwärts drehend links mit BackLED
k6(Wert32): asuro fährt kurze Zeit rückwärts drehend links mit BackLED
Das funktioniert bei meinem asuro fast tadellos. "Fast" weil unglaublicherweise dies geschah:
Bild hier
Blöderweise werden k3 und k4 nicht abgefragt. Aber wer hätte gedacht, dass die Testfahrt nach zwei Minuten so endet?
Gruß
mic







Zitieren

Lesezeichen