-
        

Ergebnis 1 bis 3 von 3

Thema: Ich bekomm es einfach nicht gebacken: PollSwitch funktion

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    21.08.2006
    Beiträge
    8

    Ich bekomm es einfach nicht gebacken: PollSwitch funktion

    Anzeige

    Ich probiere jetzt hier schon seit knapp 1.5 stunden rum und bekomm es einfach nicht gebacken den asuro zu auch nur einer reaktion zu bewegen wenn ich einen taster an der front drücke...


    Hier mein Code

    #include <asuro.h>
    int main(void) {
    Init();

    PollSwitch();
    while(PollSwitch()>0)
    {
    MotorDir(FWD,FWD);
    MotorSpeed(120,10);
    }
    while(1);
    return 0;
    }


    Ps.:

    Der Switch test funktioniert supper ....

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    Hallo,

    in deinem Programm wird der obere Teil solange ausgeführt, wie eine Taste gedrückt wird,
    in dem Fall das keine mehr gedrückt wird, springt das Programm in die untere Endlosscheife, und kommt da auch nimer raus !

    Also wenn beim einschalten des Asuro schon kein Taster betätigt wurde, macht der Asuro einfach garnix merkbares !

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    21.08.2006
    Beiträge
    8
    Vielleicht kann jemand von euch mir ja nochmal weilterhelfen...
    Ich versuche gerade ein Programm zu schreiben, welches Feststellen kann ob sich ein rad nicht mehr dreht (asuro hängt am teppich fest o.ä.)


    Ich habe bis jetzt schon folgendes Fertig:



    #include "asuro.h"

    int main(void)
    {
    unsigned int Rmin = 1024, Rmax = 0, Lmin = 1024, Lmax = 0, Rmitte = 512, Lmitte = 512, data[2];
    unsigned int wegr=0, wegl=0;
    unsigned char flagl=FALSE, flagr=FALSE;
    Init();
    MotorDir(FWD,FWD);
    MotorSpeed(100,125);
    while(1) {
    OdometrieData(data); // 0. links, 1. rechts
    // max links
    if (data[0] > Lmax)
    Lmax += (data[0] - Lmax) / 2;
    // min links
    if (data[0] < Lmin)
    Lmin -= (Lmin - data[0]) / 2;
    // max rechts
    if (data[1] > Rmax)
    Rmax += (data[1] - Rmax) / 2;
    // min rechts
    if (data[1] < Rmin)
    Rmin -= (Rmin - data[1]) / 2;
    Rmitte=(Rmax+Rmin)/2;
    Lmitte=(Lmin+Lmax)/2;
    if ((data[0] < Lmitte) && (flagl == TRUE)) {
    flagl = FALSE;
    wegl++;
    }
    if ((data[0] > Lmitte) && (flagl == FALSE)) {
    flagl = TRUE;
    wegl++;
    }
    if ((data[1] < Rmitte) && (flagr == TRUE)) {
    flagr = FALSE;
    wegr++;
    }
    if ((data[1] > Rmitte) && (flagr == FALSE)) {
    flagr = TRUE;
    wegr++;
    }

    unsigned int test[2];

    wegr = test[1];


    if (wegr == wegaltr)
    {
    StatusLED(RED);
    serwrite(wegr,20);
    serwrite(wegaltr,20);
    }



    }
    return 0;
    }






    Mein Problem ist jetzt, wie schaffe ich es den Alten wert zu speichern also was z.b das rechte rad von der z.b. 2. messung hatte.


    Wäre nett wenn mir jemand helfen könnte

Berechtigungen

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