Poste am besten erstmal den gesammten Code. Ich denke dann kann man dir sehr viel besser helfen.
mfg
jackie
hallo alle zusammen!
ich habe ein problem!!!
ich bin asuro-anfänger und verstehe nicht warum die whileschleifen bei mir nicht funktionieren...
als beispiel:
...
while (PollSwitch>0)
if
{
(StatusLED(RED));
}
else
{
(StatusLED(GREEN));
}
...
so! gespeichert, make, und geflasht!
asuro aus wieder an StatusLED rot...drück ich jetzt die kollisionstaster passiert NICHTS!
kennt jemd das problem??? wer kann mir helfen?
grüße undergroundi!
Poste am besten erstmal den gesammten Code. Ich denke dann kann man dir sehr viel besser helfen.
mfg
jackie
Hallo Undergroundi,
willkommen im RN-Forum.
Zu PollSwitch() (mit den Klammern) ist anzumerken, dass die Tastenwerte nicht immer korrekt zurückgegeben werden. Um sicherer zu prüfen, sollte man mehrere PollSwitch()-Aufrufe machen und vergleichen, ob immer der selbe Werte erkannt wurde bevor man im Progamm darauf reagiert. Häufig stimmt auch die Kallibrierung der Tastenwerte nicht genau weil die Widerstandswerte der Tastenbeschaltung zu große Toleranzen aufweisen. Zum Einstieg kannst dir mal den Artikel dazu im asurowiki durchlesen:
http://www.asurowiki.de/pmwiki/pmwiki.php/Main/Tasten
Außerdem sollte dein Codefetzen besser so aussehen:
... mit zusätzlichen geschweiften Klammern für die While-Schleife.Code:while (PollSwitch()>0) { if { (StatusLED(RED)); } else { (StatusLED(GREEN)); } }
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!
alles klar vielen dank!!!
wichtig ist 1. dass du die klammern nicht vergisst. aber das meldet dir auch der compiler...
2. solltest du, wenn du code postest, den code-button verwenden. dann wird der code in so einer hübschen box eingefast wie bei radbruch.
Weiss nicht, wie's bei Asuro ist. Aber normalerweise schreib' ich immer
Was is denn die Bedingung für StatusLED(RED) ??Code:while (bedingung) { if (andere bedingung) { tu_dieses(); } else { tu_jenes(); } }
Vermute: if ohne bedingung heißt "immer" , also ewiges rotes licht
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
PollSwitch() ist eine funktion, die prüft ob (und welche) taster gedrückt werden.
aber eben nur wenn man die klammern setzt =)
Hallo
Oje, das ist ja peinlich. *schäm* Vor lauter PollSwitch() und While glatt übersehen. Sorry. Was sagt denn der Compiler zu dieser Konstruktion?Was is denn die Bedingung für StatusLED(RED) ??
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!
also ich möchte mal meinen dass das programm SO gar nicht richtig lauffähig ist ... wennCode:while (PollSwitch>0) if { (StatusLED(RED)); } else { (StatusLED(GREEN)); }
while (PollSwitch>0)
die einzige schleife ist, purzelt dein Asuro logischerweise nach der ersten schleifenbedingung in das programmende ... ob die LED dann standardmäßig rot wird weis ich adhoc nicht, ist aber zu vermuten ...
versuchs mal mit
Code:unsigned char ret = 0; while(1){ ret = Pollswitch(); if ... }
Also ich verstehe das auch nicht so ganz... Ein IF ohne Bedingung funktioniert doch gar nicht oder?
Sollte das ganze Konstrukt nicht eher so aussehen:
Ich hoffe ich habe nicht noch mehr Verwirrung gestiftet !Code:while(1){ if(PollSwitch()>0) {StatusLED(RED);} // Wird eine Taste gedrückt --> LED = Rot else {StatusLED(GREEN);} // Keine Taste --> LED = Grün return 0; }
Gruß,
1nDaCu8
Lesezeichen