-         

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

Thema: [Asuro] Problem bei Tasterabfrage mittels PollSwitch

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    29.01.2005
    Ort
    Rheingau
    Alter
    42
    Beiträge
    8

    [Asuro] Problem bei Tasterabfrage mittels PollSwitch

    Anzeige

    Hallo Zusammen,

    ich habe mir vor Weihnachten einen Asuro gekauft und ihn gestern und heute zusammen gelötet. Nun bin ich dabei, meine ersten Programme zu schreiben und habe beim Abfragen der Schalter an der Vorderseite ein Problem.

    Mein Programm lässt den Asuro so lange fahren, bis er gegen ein Objekt stösst. Dann dreht er sich um ein paar Grad und fährt weiter. Im Prinzip nicht schwierig.

    Hier mal ein kurzer Codeausschnitt:

    void run() {
    MotorDir(FWD, FWD);
    MotorSpeed(160, 160);

    unsigned char status = 0;
    while (status == 0) {
    status = PollSwitch();
    }

    MotorSpeed(0, 0);
    turn();
    run();
    }

    Nun habe ich das Problem, dass der Asuro ein Stück fährt und dann wendet, obwohl er nirgendwo dran gekommen ist. Wenn ich mit dem Finger einen Taster berühre, dann dreht er sich auch - so soll es ja sein. Aber wieso dreht er sich, obwohl er im freien Raum steht? Das passiert auch, wenn ich ihn in der Luft halte. Oftmals dreht er sich sogar ein paarmal.


    Vielleicht hatte jemand von Euch ähnliche Probleme?

    Vielen Dank schonmal für die Hilfe
    Jens

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    29.01.2005
    Ort
    Rheingau
    Alter
    42
    Beiträge
    8
    Nach einer Menge Tests und Debug-Ausgaben über die IR-Schnittstelle bin ich der Sache auf den Grund gegangen.

    Durch ein Sleep in der while-Schleife funktioniert die Tasterabfrage nun wie gewünscht!

    unsigned char status = 0;
    while (status == 0) {
    status = PollSwitch();
    sleepms(10);
    }

    sleepms ist eine eigene Funktion, die den Asuro für die angegebenen ms schlafen lässt.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Das ist ja merkwürdig! Hab schon überelgt, warum esnicht klappt, ab das es daran liegt!?

    MFG Moritz

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    29.01.2005
    Ort
    Rheingau
    Alter
    42
    Beiträge
    8
    Ich bin am Überlegen, ob es überhaupt clever war, immer wieder run aufzurufen.
    Bei einer Rekursion muss sich das Programm ja irgendwie seinen Rückweg merken. Bei einer normalen Endlosschleife ist dies nicht der Fall.
    Sehe ich das richtig? Vielleicht hängt es auch damit zusammen.
    Werde das gleich mal ausprobieren!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    29.01.2005
    Ort
    Rheingau
    Alter
    42
    Beiträge
    8
    Also an der Rekursion hat es nicht gelegen.

    Dafür ist mir etwas anders aufgefallen. Wenn ich den Asuro in der Hand halte, verhält er sich so, wie er soll. er fährt und fährt und fährt... und wenn ich einen Taster drücke macht er einen Turn.

    Stelle ich ihn auf den Boden und er schrubbert so vor sich hin, dann macht er auf gerader Strecke einen Turn, obwohl kein Taster berührt wurde.
    Das gleiche passiert, wenn ich Ihn in der Hand halte und die Reifen ein klein wenig blockiere.

    Scheint also irgendwie mit den Motoren und der Reibung zu tun zu haben.
    Jetzt werde ich mal schauen, welchen Wert PollSwitch() liefert, wenn die Motoren blockieren bzw. einen starke Reibung vorhanden ist.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Das gleiche passiert, wenn ich Ihn in der Hand halte und die Reifen ein klein wenig blockiere.
    Vielleicht ist die Spannung ein wenig instabil, schalte doch mal einen Kondensator 470µF oder 100 an die Versorgungsspannung. Vielleicht auch mal statt der batterien ein stabiles Netzteil oder so.

    MFG moritz

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    29.01.2005
    Ort
    Rheingau
    Alter
    42
    Beiträge
    8
    Vielen Dank für den Tipp, Moritz! Werde ich umgehend ausprobieren (sobald ich einen Kondensator habe).
    Muss der Kondensator in reihe oder parallel zur Versorgungsspannung geschaltet werden?
    Ich erzähle besser nicht, dass ich vor 12 Jahren eine Elektronikerausbildung absolviert habe. Da müsste ich das ja eigentlich noch wissen....

    Grüße Jens

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Parallel, also + na + und - an -.
    Ich vermute es nur mla, weil vermutlich wenn eine MOtor blockiert die Spannung einbrucht, da zuviel Strom fließt, dadurch macht der uC dann schonmal Mist. Ein Phänomen, was oft auftritt ist ein Reset oder so.

    MFG Moritz

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    29.01.2005
    Ort
    Rheingau
    Alter
    42
    Beiträge
    8
    Hat geklappt! Ich habe den Kondensator auf die Unterseite der Platine gelötet, an der Stelle an der die Versorgungskabel angelötet sind.
    Jetzt läuft er, wie ich mir das vorstelle. *juhu*

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Tja, vielleicht waren auch nur die Batterien etwas schwach.

    Ich habe den Kondensator auf die Unterseite der Platine gelötet, an der Stelle an der die Versorgungskabel angelötet sind.
    Ich würde ihn erst Hinter dem Schalter anlöten, denn ich meine zu galuben, dass immer ein geringer Strom fließt. Das wäre ja Mist, wenn sich das Ding über Nacht entlädt.

    MFG Moritz

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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