-         

Ergebnis 1 bis 6 von 6

Thema: Asuro's linker Motor erkennt Kollision?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    02.05.2010
    Ort
    München
    Beiträge
    41

    Asuro's linker Motor erkennt Kollision?

    Anzeige

    Halli Hallo liebes Roboternetz,
    ich bin jetzt seit 2 Tagen stolzer Besitzer eines Asuro und habe diesen heute auch fertig gebracht
    Alle Tests haben wunderbar funktioniert bis ich anfing meine eigenen Programme zu schreiben
    Ich wollte eigentlich ein Stückchen fahren und dann per PollSwitch eine Kollision erkennen lassen und er soll stoppen und rückwärts weg fahren..
    Da fingen die Probleme auch schon an und zwar fuhr mein Asuro ein Stück und stockte immer und immer wieder.. (nur links). Hab daraufhin mal die Achsen überprüft und Zahnräder aber scheint alles sauber zu sein.
    Hab n kleines Programm geschrieben das mir dann für jedes Rad einzeln ausgibt wenn es eine Kollision gibt:

    #include "asuro.h"

    int main(void)
    {
    Init();

    MotorDir(FWD,BREAK);
    MotorSpeed(150,0);
    StatusLED(GREEN);
    while (PollSwitch()==0){
    }
    MotorSpeed(0,0);
    StatusLED(RED);
    return 0;
    }


    (Scheint für manche vllt. ein bisschen komisch geschrieben aber bin neu in C sry )

    So und nun ja wenn das Prog fürs rechte Rad geschrieben ist funktionierts, es läuft so lange bis ich einen Taster drücke...
    Und wenn ich das ganze fürs linke Rad mache dann läuft das Rad wenns hoch kommt 2sec. (meist kürzer) und stoppt sofort ohne das ich einen Taster gedrückt habe..
    Und ohne PollSwitch läuft das linke Rad ganz normal und durchgehend..

    Hoffe mir kann jemand helfen

    MfG. mtzE

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.01.2009
    Ort
    NRW
    Beiträge
    562
    Hallo

    Ein viel besprochenes Problem ist dass die Taster beim Asuro nicht besonders zuverlässig sind. Aufgrund mehrerer Faktoren wird manchmal ein Wert ungleich 0 zurückgegeben obwohl nichts gedrückt wurde.

    Um dies vorzubeugen gibt es mehrere Möglichkeiten wie mehrfache Abfragen:

    Code:
    ...
     int T,T1,T2;
    T=PollSwitch(); 
    T1=PollSwitch(); 
    T2=PollSwitch();
     if (T==0||T1==0||T2==0) { ... }
     ...
    oder indem du einfach auf einen Taster verzichtest und sagst

    Code:
    ...
     if (Taster<2) { ... }
     ...
    oder etwas ausgefallener:

    Code:
    ... 
    while(1) { 
    StatusLED(GREEN); 
    MotorDir(FWD,FWD);
    MotorSpeed(150,150);
    while((PollSwitch()==0) || (PollSwitch()==0) || (PollSwitch()==0));
    int I;
    for (I=0;I<4000;I=I+1)
    { StatusLED(RED);
     MotorDir(RWD,BREAK);
     MotorSpeed(200,0);
     } 
    } 
    ...

    Gruß Thund3r
    Dein Gott sei mein Zeuge!

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    02.05.2010
    Ort
    München
    Beiträge
    41
    Hmm..
    Vielen Dank für die schnelle und zugleich umfangreiche Antwort
    auf die Ideen bin ich noch gar nicht gekommen :P
    Werde das ganze gleich mal in die Tat umsetzen und mal posten ob es die Antwort für mein Problem war..
    Aber ist es nicht wunderlich das es mit dem rechten Rad funktioniert und mit dem linken Rad nicht? Sonst müsste das ganze ja auch nach einiger Zeit mein rechten Rad erscheinen..

    MfG. mtzE

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.01.2009
    Ort
    NRW
    Beiträge
    562
    Hallo

    Die Sache ist das öfter mal ein Wert ungleich 0 (meistens 1) zurückgegeben wird was aber dann nur den linken Teil des Asuros betrifft.
    Außerdem wird in deinem Programm "return 0;" ausgeführt obwohl das Programm noch nicht fertig ist.
    return 0 darf nur nach dem Ende der Hauptschleife stehen.
    Eine Hauptschleife ist in dem Programmteil auch nicht vorhanden

    #include "asuro.h"


    int main(void)
    {
    Init();
    while(1) // Hauptschleife
    {Hier das Programm...}
    return 0;
    }

    Gruß Thund3r
    Dein Gott sei mein Zeuge!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    02.05.2010
    Ort
    München
    Beiträge
    41
    Habe es so eben ausprobiert Du hattest Recht..
    War wohl immer ein Wert der gesendet wurde
    Vielen Dank für die schnelle Hilfe
    TOP!

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.01.2009
    Ort
    NRW
    Beiträge
    562
    Hallo

    Kein Problem!
    Und nun viel Spaß und Erfolg mit dem Robo

    Gruß Thund3r
    Dein Gott sei mein Zeuge!

Berechtigungen

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