-
        

Ergebnis 1 bis 3 von 3

Thema: Asuro und die Sleep funktion

  1. #1

    Asuro und die Sleep funktion

    Anzeige

    Hallo Forum,

    ich bin gerade dabei ein kleines Kollisionsprogramm zu schreiben, leider treten (für mich) unerklärliche Fehler auf vielleicht könnt ihr mir weiter helfen.

    Zum testen habe ich Folgenden Code geschrieben, funktioniert auch ohne Probleme.
    Code:
                   if (PollSwitch() > 0) {
                            StatusLED(RED);
                            MotorDir(RWD,RWD);
                            MotorSpeed(120,120);
                    } else {
                            StatusLED(GREEN);
                            MotorDir(FWD,FWD);
                            MotorSpeed(120,120);
                    }

    Sobald ich aber einen Sleep Funktion einbaue spinnt das Teil, Asuor verhält sich als währe eine Taste gedrückt.

    Code:
                      if (PollSwitch() > 0) {
                            MotorDir(RWD,RWD);
                            MotorSpeed(120,120);
                            StatusLED(RED);
                            BackLED(ON,ON);
                            for (i=0; i<250; i++) {
                                    Sleep (216);
                            }
                            MotorDir(RWD,FREE);
                            for (i=0; i<250; i++) {
                                    Sleep (216);
                            }
                    } else {
                            MotorDir(FWD,FWD);
                            MotorSpeed(120,120);
                            StatusLED(GREEN);
                            BackLED(OFF,OFF);
                    }
    Danke

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hallo redsnapper,

    willkommen im Roboternetz Forum.

    In der Anleitung zum Asuro findet sich zur PollSwitch Funktion folgender Hinweis:
    Evtl. muss diese Funktion mehrfach hintereinander aufgerufen werden, um das „richtige“ Ergebnis
    zu erhalten. Der geladene Kondensator C7 muss sich erst entladen. Dies kann ein wenig dauern.
    Wenn der A/D-Wandler zu früh abtastet, können verschiedenste Spannungswerte gemessen
    werden.
    Bei meinem Asuro z.B. muß ich die PollSwitch() Funktion 8x hintereinander aufrufen, bis ich das Ergebnis verwenden kann.

    Code:
      ...
    
    while(1) {
    ...
       PollSwitch();
       PollSwitch();
       PollSwitch();
       PollSwitch();
       PollSwitch();
       PollSwitch();
       PollSwitch();
       if (PollSwitch() > 0) { 
       // Taste gedrueckt
       ...
      }
      else {
      // keine Taste gedrueckt
      ...
      }
      ...
    }
    Vielleicht hilft das ja.

    Gruß Peter

  3. #3
    Erst mal danke für deinen Tipp, leider ändert sich bei mir auch nach 10 PollSwitch ausrufe nichts.

    Hab eine andere Code geschrieben, der (bis jetzt ) ziemlich gut funtzt.

    Code:
    int tmp1 = PollSwitch();
    int tmp2 = PollSwitch();
    if (tmp1 > 0 && tmp2 > 0 && tmp1 == tmp2) {

Berechtigungen

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