Hallo
Wenn du nicht nur irgendwelche Glaskugelsprüche lesen möchtest solltest du uns dein Programm zeigen.
Gruß
mic
Hallo,
ich habe ein Problem bei der if-Abfrage der Taster.
Wenn bei if zwischen den geschweiften Klammern mehr als ein Befehl steht, dann führt der ASURO immer diese aus, obwohl die Bedingung nicht erfüllt ist.
Steht zwischen den geschweiften Klammern nur ein Befehl dann klappt alles, wie es soll.
Ich habe schon alle Möglichkeiten, die ich kenne ausprobiert,
Ich hoffe auf baldige Hilfe.
Hallo
Wenn du nicht nur irgendwelche Glaskugelsprüche lesen möchtest solltest du uns dein Programm zeigen.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Zeig mal her die fraglichen Zeilen. Beim C gibt's nix esoterisches, da hast du irgendeinen formalen Hund drinnen.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
so hier ist der code
Code:#include "asuro.h" void RWD(void) { MotorDir(RWD,RWD); MotorSpeed(200,200); Msleep(1000); } int main(void) { unsigned char t1, t2; Init(); while (1) { PollSwitch(); PollSwitch(); t1 = PollSwitch(); t2 = PollSwitch(); MotorDir(FWD,FWD); MotorSpeed(250,250); if(t1 && t2 && t1 ==t2){ if(t1>0x00) { RWD; } } } return 0; }
Hallo sebwolf,
if(t1 && t2 && t1 ==t2)
Was willst du genau? Arbeite evtl. mit mehr Klammern (eindeutig)
Da frag ich ab ob beide Variablen die gleichen Tasterwerte liefern.
Und ich will dass der ASURO, wenn ein Taster gedrückt wird, rückwärts fährt(die Funktion RWD ausführt)
Meinst du " if (t1==t2) " ?
Ja, aber selbst wenn ich es so ändere,fährt er trotzdem immer rückwärts
Habe mir mal die Anleitung durchgelesen:
wieso führst du 2x Pollswitch gleich nacheinander aus (evtl. kurze Pause durch warten oder besser per IRQ) und speicherst das Ergebnis in 2 unterschiedliche Variablen?
Laut Anleitung bekommst du ein Byte mit dem Ergebniss zurück und kannst dies auswerten.
Somit brauchst du eigentlich keine Variable sondern einfach nur if (PollSwitch()>0){} (Anleitung S.60)
Wenn du wie oben direkt nacheinander das Ergebnis in unterschiedliche Variablen abspeicherst und vergleichst, wird dies wahr ergeben und die nächste Abfrage, sofern ein Taster gedrückt wurde ebenfalls.
Hallo
Die Überprüfung von PollSwitch() ist sinnvoll, vor allem bei laufenden Motoren "lügt" die Funktion recht häufig. RWD ist ein reserviertes Wort weil es in asuro.h definiert ist. Mir ist schleierhaft wie ihr solchen Mist fehlerfrei kompilieren könnt:
GrußCode:#include "asuro.h" void xRWD(void) { MotorDir(RWD,RWD); MotorSpeed(200,200); Msleep(1000); } int main(void) { unsigned char t1, t2; Init(); while (1) { //PollSwitch(); //PollSwitch(); t1 = PollSwitch(); t2 = PollSwitch(); MotorDir(FWD,FWD); MotorSpeed(250,250); if(t1 ==t2){ if(t1>0x00) { xRWD(); } } } return 0; }
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Lesezeichen