- 12V Akku mit 280 Ah bauen         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 28

Thema: Asuro-Fragen über Fragen

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    10.06.2007
    Beiträge
    13
    Anzeige

    Powerstation Test
    Zitat Zitat von damaltor

    zu deinem kollisionstest kann ich nichts sagen, ich kenne den programmcode nciht. bitte poste den code unter verwendung des code-buttons
    dadurch werden die seiten im forum nicht unnötig lang.

    den thread-titel kannst du selbst ändern, indem du bei deinem ersten posting im thread auf den edit-knopf klickst.
    Hier ist mein Code:
    Code:
    #include "asuro.h"
    
    #define FULL_L 250
    #define FULL_R 220
    
    /* 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;
    }
    Ich hoffe ihr könnt mein Problem lösen!
    Kann es auch eventuell am Prozessor liegen?
    Kann man den vll nachkaufen?
    Ich schätz ich hab den durch elektrostatsiche Aufladung meiner Selbst
    "zerstört"! Kann das sein?

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    699
    Ich schätz ich hab den durch elektrostatsiche Aufladung meiner Selbst
    "zerstört"! Kann das sein?
    Theoretisch ist das möglich, praktisch passiert das zum Glück nicht so oft.

    Ich habs geschaft zum flashen, indem ich mim Asuro Chip "rumgespielt" habe bis das flashen ging^^
    ich hoffe, Du nimmst den Begriff "flash" (Blitz) nicht zu Ernst? Was hast Du denn hier genau getrieben? "rumgespielt"???

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    699
    Probiere bitte mal dieses Hallo-Welt-Programm unter Kontakt mit der IR-Übertragung, während die µC-Software läuft, und dem Windows-Programm Hyperterminal:
    Code:
    #include "asuro.h"
    
    int main()
    {
      Init();
    
      const int DAUER=500;
     
      StatusLED (YELLOW);
     
      while (1)
      {
        SerWrite("Hallo Welt!\r\n",13);
        Msleep(DAUER);
        SerWrite("Mein Name ist ASURO!\r\n",22);
        Msleep(DAUER);
        SerWrite("Ich bin ein mobiler Roboter.\r\n",30);
        Msleep(DAUER);
      }
        
      while (1);
      return 0;
    }

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    10.06.2007
    Beiträge
    13
    Was hast Du denn hier genau getrieben? "rumgespielt"???
    Mein Asurochip saß nicht genau auf dem Sockel und also habe ich ihn so reingesetzt bis er passte und das flashen ging!

  5. #15
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo Meur

    Die Geschwindigkeiten und Drehrichtungen stimmen bei mir zwar nicht, weil mein asuro ein anderes Getriebe hat, aber dein Programm scheint grundsätzlich zu funktionieren:

    Bild hier  
    (Bild anklicken für youtube-Video)

    Sind vielleicht deine Akkus leer oder haben schlechten Kontakt?

    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!

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    699
    Mein Asurochip saß nicht genau auf dem Sockel
    Das ist Grundvoraussetzung, dass der ASURO elektrisch angeschlossen ist.

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    10.06.2007
    Beiträge
    13
    Zitat Zitat von radbruch

    Die Geschwindigkeiten und Drehrichtungen stimmen bei mir zwar nicht, weil mein asuro ein anderes Getriebe hat, aber dein Programm scheint grundsätzlich zu funktionieren:

    Bild hier  
    (Bild anklicken für youtube-Video)
    Hi danke für eure Hilfe, jetzt klappt das flashen 1a da ich den Chip richtig drin hab!
    Nun versuche ich den Kollisiontest in gang zu kriegen!
    Als ich ihn starte fährt der Asuro auch munter drauf los, aber wenn er gegen z.B. eine Wand fährt bleibt er stehen(heck LED gehen) und dreht nicht!
    An was kann das liegen?
    Hier mein Code:
    Code:
    #include "asuro.h"
    
    #define FULL_L 250
    #define FULL_R 220
    
    /* 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;
    }

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

    Nanu, grad ist er doch nur nach rechts gefahren? *kopfkratz* Egal.

    Um die Tasten richtig zu nutzen, solltst du dir den (inzwischen editierten ) Artikel darüber im asurowiki durchlesen.

    wenn er gegen z.B. eine Wand fährt bleibt er stehen(heck LED gehen)
    Gehen wohin? Wenn sie ausgehen, sollten die Motoren weiterlaufen, ansonsten sollte zumindest eine BackLED und ein Motor an sein, weil kein BackLED(ON,ON)-Befehl in deinem Programm vorkommt. Beim Stopp würden sie allerdings ausbleiben (hier sollte dann vielleicht ein BackLED(ON,ON) stehen), dann wären wir aber wieder bei einem Tastenproblem. Prüfe mal je Seite nur eine Taste mit (t1 & 1) bzw. (t1 & 32) oder den anderen Einzeltastenwerten.

    Und vielleicht noch die andere Abfrage so ändern: (t1 && t2 && (t1 == t2))

    (t1 == t2) prüft bitweise, das Ergebniss ist true oder false. Und dieses Ergebniss vergleichst du dann mit t1/2 mit dem logischen &&. Ich weis nicht, ob sich das Ergebniss dann ändert, aber durch die zusätzlichen Klammern kommt der Ausdruck dem näher, was du prüfen willst:

    Wenn t1 true (also mindestens ein gesetztes Bit hat und deshalb logisch true ist) und t2 true ist (aus dem selben Grund wie t1) und beide Werte bitweise gleich sind (also selbes Bitmuster haben) und deshalb der Ausdruck (t1==t2) true ist, dann wurde eine Tastenkombination richtig erkannt. Verwirrt? Ich auch.

    Die Prüfung des Ausdrucks wird übrigens nach dem ersten erkannten false abgebrochen. Deshalb könnte man die bitweise Überprüfung (t1==t2) zuerst machen und bei unterschiedlichen Werten, von denen aber einer der beiden == 0 ist, würde der Rest danach nicht mehr geprüft werden. Das wirkt sich dann aber erst aus, wenn t2==0 ist, und ich weis nicht, ob das bei einem RISC-Processor zeitmässig überhaupt einen Unterschied macht. Für unsere Programme spielt es sicher keine Rolle.

    Viel einfacher wäre vielleicht so: ( (t1==t2) && (t1!=0) )
    und weil's ein if else ist, würde dann ein einfaches (t1==t2) an dieser Stelle reichen.
    Ich denke, es reicht jetzt wirklich ... *lol*

    Möglich wäre noch ein sehr schnelles Umschalten zwischen links und rechts, dass sollte aber wegen dem Msleep(1000); nicht passieren.

    Was macht denn dein asuro wenn du ihn in der Hand hälst und jede Taste einzeln drückst? Funktioniert dann alles erwartungsgemäß? Was macht er, wenn du dann mehrere, vor allem linke und rechte Tasten zusammen drückst?

    Ich könnte ja auch dein neues Programm auf meinen asuro flashen, aber ich sitze doch eigentlich im Pool.

    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!

  9. #19
    Neuer Benutzer Öfters hier
    Registriert seit
    10.06.2007
    Beiträge
    13
    Also,

    jetzt geht mein Asuro ja wieder, da ich den Asuso-Chip richtig in des Sockel gesetzt habe, da er vorher gewackelt hatte was zu Störungen geführt hat.
    Nun zu meinem Prog:
    Das Prog an sich geht( ein Freund von mir hat auch den Asuro und bei dem gehts alles außer dass er immer nach rechts fährt^^)
    Wenn ich meinen Asuro in der hand halte macht er nix besonders außer dass er stehen bleibt wenn ich die Sensoren drücke ;( !!
    Wenn ich auf der linken Seite die Sensoren drücke geht die Back LED auf der rechten Seite an (is das normal)?
    Danke für eure hilfe

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.07.2006
    Ort
    Puchheim
    Alter
    76
    Beiträge
    455
    Hat jemand BMP's / Jpeg's von radsensoren / Encoderscheiben mit 8 oder mehr Segmenten (Odometriescheiben ?).

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen