-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 15

Thema: While-Schleife geht nicht!!!

  1. #1

    While-Schleife geht nicht!!!

    Anzeige

    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!

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    26.11.2007
    Beiträge
    14
    Poste am besten erstmal den gesammten Code. Ich denke dann kann man dir sehr viel besser helfen.

    mfg
    jackie

  3. #3
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    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:
    Code:
    while (PollSwitch()>0)
    {
    	if
    	{
    		(StatusLED(RED));
    	}
    	else
    	{
    		(StatusLED(GREEN));
    	}
    }
    ... mit zusätzlichen geschweiften Klammern für die While-Schleife.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  4. #4
    alles klar vielen dank!!!

  5. #5
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    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.
    kleinschreibung ist cool!

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Weiss nicht, wie's bei Asuro ist. Aber normalerweise schreib' ich immer
    Code:
         while (bedingung)
         {
            if (andere bedingung)
            {
                   tu_dieses();
            }
            else
            {
                   tu_jenes();
            }
        }
    Was is denn die Bedingung für StatusLED(RED) ??

    Vermute: if ohne bedingung heißt "immer" , also ewiges rotes licht
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    PollSwitch() ist eine funktion, die prüft ob (und welche) taster gedrückt werden.
    aber eben nur wenn man die klammern setzt =)
    kleinschreibung ist cool!

  8. #8
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    Was is denn die Bedingung für StatusLED(RED) ??
    Oje, das ist ja peinlich. *schäm* Vor lauter PollSwitch() und While glatt übersehen. Sorry. Was sagt denn der Compiler zu dieser Konstruktion?

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.381
    Code:
    while (PollSwitch>0)
    if
    {
    (StatusLED(RED));
    }
    else
    {
    (StatusLED(GREEN));
    }
    also ich möchte mal meinen dass das programm SO gar nicht richtig lauffähig ist ... wenn
    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 ...
    }

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    10.05.2007
    Ort
    Allenfeld
    Alter
    32
    Beiträge
    19
    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:

    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; 
    }
    Ich hoffe ich habe nicht noch mehr Verwirrung gestiftet !

    Gruß,

    1nDaCu8

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •