-         

Ergebnis 1 bis 7 von 7

Thema: taster-wackelkontakt

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.10.2006
    Ort
    Bonn
    Alter
    26
    Beiträge
    137

    taster-wackelkontakt

    Anzeige

    ich habe ein programm geschrieben, mit dem der asuro wenn er gegen ein hindernis fährt einfach um dreht, aber manchmal dreht er ohne jeden erkennbaren grund um ich glaube, dass ein wackelkontakt ist, denn das programm sollte eigentlich nur starten, wenn einer der taster gedrückt ist, man kann dafür den asuro aber auch einfach schütteln, ich weiß nur nicht, wo sich dieser wackelkontakt befinden könnte!?

    falls es doch am programm liegen könnte:

    Code:
    #include "asuro.h"
    
    int main(void)
    {
      Init();
    FrontLED(ON);
       StatusLED(RED);
       BackLED(ON,ON);
       while(PollSwitch()==0)
       {
       MotorDir(FWD,FWD);
       MotorSpeed(0,0);}
       StatusLED(GREEN);
       BackLED(OFF,OFF);
       FrontLED(OFF);
       Msleep(600);
       /*________*/
      while(1)
      {
      if(PollSwitch()==0)
      {
      while(PollSwitch()==0)
      {
      StatusLED(GREEN);
      MotorSpeed(255,255);
    MotorDir(RWD,RWD);
      }
      }
      
      if(PollSwitch() > 0)
      {
      StatusLED(YELLOW);
      MotorSpeed(255,255);
      MotorDir(RWD,FWD);
    Msleep(600);
    MotorSpeed(0,0);
      
      }
      }
    
       
      while (1);
      return 0;
    }
    -

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    16.07.2005
    Ort
    Solingen
    Alter
    48
    Beiträge
    61

    Re: taster-wackelkontakt

    Hi,

    Zitat Zitat von Nighthawk91
    ich habe ein programm geschrieben, mit dem der asuro wenn er gegen ein hindernis fährt einfach um dreht, aber manchmal dreht er ohne jeden erkennbaren grund um ich glaube, dass ein wackelkontakt ist, denn das programm sollte eigentlich nur starten, wenn einer der taster gedrückt ist, man kann dafür den asuro aber auch einfach schütteln, ich weiß nur nicht, wo sich dieser wackelkontakt befinden könnte!?

    [/code]
    ich nehme mal an, dass es sich um das klassische Tasterproblem handelt. Wird mehrmals monatlich angefragt. Einfach mal ins Forum schauen.

    Hope it helps,

    Mucki

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.10.2006
    Ort
    Bonn
    Alter
    26
    Beiträge
    137
    ich finde leider nichts, auch nicht mit der boardsuche
    -

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Die Suche ist echt quälend, versuche mal im Forum "| | |--Asuro" nach "taster AND problem" zu suchen.

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

  5. #5
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.913
    ja es scheint wirklich das normale tasterproblem zu sein. dieses problem (und das der odometrie) sind wohl die meistdiskutierten im forum.
    ausserdem fragst du doppelt ab, ob PollSwitch() = 0 ist. einmal mit der if-schleife und einmal mit der while-schleife. wozu?
    kleinschreibung ist cool!

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.10.2006
    Ort
    Bonn
    Alter
    26
    Beiträge
    137
    irgendwie hat das nicht funktioniert:
    wen 0 forwärts
    also hab ich geschrieben
    wenn null vorwärts bis nicht mehr 0
    -

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.12.2006
    Ort
    Saarland
    Alter
    37
    Beiträge
    314
    versuch das mal

    Code:
    #include "asuro.h"
    
    /* Um eventuelle Unterschiede zwischen linken und rechtem Motor auszugleichen
     * definieren wir 2 Werte für fullspedd links und rechts
     */
    #define FULL_L 250    /* Fullspeed linker Motot */
    #define FULL_R 220    /* Fullspeed rechter Motor */
    
    /* Motor vorwärts */
    void MotorFwd(void)
    {
      MotorDir(FWD,FWD);
      MotorSpeed(FULL_L,FULL_R);
    }
    
    /* Motor rückwärts */
    void MotorRwd(void)
    {
      MotorDir(RWD,RWD);
      MotorSpeed(FULL_L,FULL_R);
    }
    
    /* Motor rückwärts Links */
    void MotorRwdL(void)
    {
      MotorDir(RWD,RWD);
      MotorSpeed(FULL_L,0);
    }
    
    /* Motor rückwärts Rechts */
    void MotorRwdR(void)
    {
      MotorDir(RWD,RWD);
      MotorSpeed(0, FULL_R);
    }
    
    /* Motor stop */
    void MotorStop(void)
    {
      MotorSpeed(0,0);
    }
    
    int main(void)
    {
      unsigned char t1, t2;
    
      Init();
      while(1)
      {
        t1 = PollSwitch();
        t2 = PollSwitch();
        if(t1 == 0 && t2 == 0)         /* keine Taste */
        {
          MotorFwd();          /* vorwärts fahren */
          FrontLED(ON);
          BackLED(OFF,OFF);
        }
        else if (t1 && t2 && t1 == t2)
        {
          MotorStop();
          if(t1 & 0x07) /* Tasten links gedrückt? */
          {
            MotorRwdL();       /* Rückwärtskurve links fahren */
            FrontLED(OFF);
            BackLED(ON,OFF);
          }
          if (t1 & 0x38) /* Tasten rechts gedrückt? */
          {
            MotorRwdR();       /* Rückwärtskurve rechts fahren */
            FrontLED(OFF);
            BackLED(OFF,ON);
          }
          Msleep(1000);        /* 1 Sekunde fahren */
        }
      }
      return 0;
    }
    mein linker motor geht leider nicht rückwerts deswegen kann ich es nicht ausprobieren

Berechtigungen

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