-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 24

Thema: go funktion

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43

    go funktion

    Anzeige

    Hiho,
    ich habe für die schule gerade die aufgabe die "go()" funktion der asuro.c in eine "kreis()" funktion abzuwandeln. ich hab mir hier schon mal was überlegt,doch da ich zu hause keinen asuro besitze wäre es schön wenn ihr mal ein auge auf den quell code werft und evtl. mal an eurem asuro testet. desweiteren weiß ich nicht genau ob die mathe formeln unten funktionieren z.b. "((radius+11.5)*2*pi)/100" <-- was müsste ich sonst für den ausdruck schreiben unter c?

    Hier der Quellcode:
    ps: der kreis soll nach einem angegebenen radius fahren, weiteres sieht unten.

    void Kreis(int distance, int speed)
    {
    int enc_count = 0;
    int tot_count = 0;
    int diff = 0;
    int pi = 3,141592654;
    int radius = 50; // angabe des radius, den der asuro fahren soll.
    int r_rad = ((radius+11.5)*2*pi)/100; //damit berechnet man 1% vom "rechtenrad-umkreis",die 11.5 ist die spannweite zwischen den beiden rädern.
    int l_rad = (radius*2*pi)/r_rad; //hier wird berechnet, wie viel % das rechte rad mehr fahren muss.
    int speed1 = (speed/100)*l_rad; // speed1 ist der speed, den das rechte rad mehr fahren muss.
    int l_speed = speed;
    int r_speed = speed+speed1; // normal speed+speed welches das rechte rad mehr fahren muss.
    enc_count=abs(distance);


    Encoder_Set(0,0); // reset encoder

    MotorSpeed(l_speed,r_speed);
    if(distance<0) MotorDir(RWD,RWD);
    else MotorDir(FWD,FWD);

    while(tot_count<enc_count) {
    tot_count += encoder[LEFT];
    diff = encoder[LEFT] - encoder[RIGHT];
    if (diff > 0) { //Left faster than right
    if ((l_speed > speed) || (r_speed > 244)) l_speed -= 10;
    else r_speed += 10;
    }
    if (diff < 0) { //Right faster than left
    if ((r_speed > speed+speed1) || (l_speed > 244)) r_speed -= 10;
    else l_speed += 10;
    }
    Encoder_Set(0,0); // reset encoder
    MotorSpeed(l_speed,r_speed);
    Msleep(1);
    }
    MotorDir(BREAK,BREAK);
    Msleep(200);
    }


    hoffe mal das mir einer helfen kann, oder verbesserungsvorschläge geben kann

    mfg Toschtosch


    EDIT: ":" durch "/" ersetzt
    und
    "int speed1 = (speed/100)*l_rad;"
    thx für info

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    12.10.2006
    Ort
    Tübingen
    Alter
    25
    Beiträge
    31
    was mir so jetzt auffällt ist, das man statt : / benutzen muss. : funktioniert nicht. wers nachher mal testen

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43
    achso, jo klar
    hatte das wie gesagt nur kurz aus der asuro.c rauskopiert und dann für die kreis zwecke umgeändert im notepad.

    kannst ja dann nochmal das ergebnis posten von deinem test

    mfg
    Toschtosch

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    20.08.2006
    Beiträge
    183
    hatte das wie gesagt nur kurz aus der asuro.c rauskopiert und dann für die kreis zwecke umgeändert im notepad. ....


    mit copy/paste lernt man nix.....

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43
    naja die ganze rechnung und überlegungen hatte ich mir vor den ferien schon in der schule gemacht... sprich wie man das probb mit den verschiedenen speed werten lösen kann

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43
    hier noch ne' exel datei, falls die rechnung unklar ist

    mfg
    Angehängte Dateien Angehängte Dateien

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.07.2006
    Ort
    Bielefeld
    Beiträge
    166
    .... moin,

    ohne Asuro wird das nix. Entschuldige bitte die offenen Worte, aber wenn du das als Trockenübung machst bleibt das alles akademisch und du kannst nie feststellen ob und welche Fehler du gemacht hast. Sag mal deinem Lehrer er soll, wenn er solche Aufgabe vergibt, auch einen bot rausrücken.


    Viele Grüße und meld dich mal, (Michael)

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    07.09.2006
    Beiträge
    43
    naja in der schule steht uns der robo immer zur verfügung, aber das is ja jetzt auch nich ne sache die ich morgen fertig haben will, sonder ab nächstem montag kann ich ja wieder praktisch dran arbeiten

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    12.10.2006
    Ort
    Tübingen
    Alter
    25
    Beiträge
    31
    Also ich teste das jetzt mal.

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    12.10.2006
    Ort
    Tübingen
    Alter
    25
    Beiträge
    31
    Also folgendes Passiert: Er fährt 30cm geradeaus in einer leichten linkskurve. Dann fährt er ein stück zurück. Ist das normal??

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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