-         

Ergebnis 1 bis 2 von 2

Thema: Anhand der Odometrie, gerade ausfahren.

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    01.10.2006
    Beiträge
    11

    Anhand der Odometrie, gerade ausfahren.

    Anzeige

    Gibt schon ziemlich viele Thread zu dem Thema, aber die meisten beschäftigen sich mit der neuen asuro.h doch ich will das Problem komplett mit der original asuro.h lösen.

    Der Asuro soll (wer hätte es gedacht) geradeaus fahren, das soll mithilfe der Odometrie realisiert werden.

    Folgenden Quellcode habe ich dafür geschrieben, will aber in keinster weiße so wie ich es will. Er fährt eben ganz normal und somit eine leichte Linkskurve.

    Code:
    unsigned char= 120;
    unsigned char= 120;
    void drive(void) {
            unsigned int odata[2];
            int time1;
            int time2;
            int cont = 1;
    
            MotorDir(FWD,FWD);
            MotorSpeed(speedleft,speedright);
            StatusLED(YELLOW);
            while(cont) {
                    time1 = 0;
                    time2 = 0;
                    OdometrieData(odata);
                    while(odata[0] > 512)
                            ;
                    do {
                            OdometrieData(odata);
                            time1++;
                    } while (odata[0] < 512);
    
                    do {
                            OdometrieData(odata);
                            time1++;
                    } while (odata[0] > 512);
    
                    while(odata[1] > 512)
                            ;
    
                    do {
                            OdometrieData(odata);
                            time2++;
                    } while (odata[1] < 512);
    
                    do {
                            OdometrieData(odata);
                            time2++;
                    } while (odata[1] > 512);
    
                    if(time1-time2 >= 1)
                    {
                            StatusLED(GREEN);
                            speedright += 2;
                    }
    
                    else if(time2-time1 >= 1)
                    {
                            StatusLED(RED);
                            speedleft += 2;
                    }
    
                    /*else*/
                    /*      cont = 0; */
            }
    }
    Die Vergleichswerte mit ">=1" sind jetzt erstmal nur zum testen, falls die Werte nicht identisch sind, sollte sich das durch die StatusLED bemerkbar machen. Doch die bleibt immer Gelb. :<

  2. #2
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    also unsigned char = 120 ist schonmal quatsch =)

    unsigned char VARIABLENNAME = 120 wäre besser.

    ansonsten vermute ich dass der wert von 512 tzu niedrig ist. du solltest anfangen dir die werte der odo Sensoren während der fahrt bzw während drehender reifen bei aufgebocktem asuro über hyperterminal ausgeben lassen.

    ansonsten BENUTZE BITTE DIE SUCHFUNKTION. das thema ist absolut zur genüge diskutiert worden, probier halt einige programme aus und ob die funktionieren wirste sehn. ansonsten hol dir die erweiterte lib, denn die ganzen funktionen der alten lib bleiben erhalten. es gibt nur ein paar neue dazu, deshalb ist es ja eine ERWEITERTE lib.
    kleinschreibung ist cool!

Berechtigungen

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