-         

Ergebnis 1 bis 6 von 6

Thema: brauche hilfte beim asuro mit den tastern/motorsteuerung

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    03.09.2006
    Beiträge
    14

    brauche hilfte beim asuro mit den tastern/motorsteuerung

    Anzeige

    Hi,
    ich hab mir vor 1 Woche einen asuro gekauft.
    die anleitung hab ich mir durchgelesen und hab das auch fast schon gerafft. Ich hab ein Programm geschrieben, wo der asuro erst vorwärts und wenn er gegen eine wand kommt,dann rückwärts fährt. Leider fährt er nach ca 1ms gleich wieder nach vorne und ruckelt somit immer an der wand hin und her. Ich weiß nicht wie ich länger nach hinten fahren kann.
    Ich glaube das geht irgentwie mit sleep, aber ich weiß nicht wie.
    Ein beispiel programm wäre ganz hilfreich. Ich könnte es dann mit meinem vergleichen.

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hi,

    Im AsuroWiki gibt es ein Beispiel dazu.
    Allerdings wird hier die Msleep Funktion der erweiterten Asuro Lib verwendet.

    Gruß m.a.r.v.i.n

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    03.09.2006
    Beiträge
    14
    ich habe dieses asuro lip runtergeladen wie kann ich es "installieren" ???
    wie funktioniert es ?

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Einfach in ein beliebiges Verzeichnis auspacken.
    Die Lib ist nur ein Quellcode Paket mit einigen Beispielen. Im Prinzip wie die Asuro_src von der Asuro CD.

    Gruß m.a.r.v.i.n

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    03.09.2006
    Beiträge
    14
    ich habe hier ein paar fragen zum code. Was bedeutet "unsigned char t1, t2"und was bedeutet t1 und t2. t1 und t2 sind ja die tasten aber wie hast du die zu den 8 tasten zugeordnet? ich weiß nicht wie man die 8 tasten zuordnen kann, wie man sagen kann das wenn eine taste gedrückt wird das dann was bestimmtes passiert.
    was soll z.b. "if(t1 == 0 && t2 == 0)" und "else if (t1 && t2 && t1 == t2)" und "if(t1 & 0x07)" und "if (t1 & 0x3" heißen ? ich weiß noch nicht wie ich die tasten programmieren kann...
    was bedeutet den void ? hier z.b. "void MotorFwd(void)". Warum steht einmal void draußen und einmal in der klammer ? ich weiß nur das du motorfwd da eine bedeutung gegeben hast aber ich versteh nicht wie.

    hier ist der code wozu ich die fragen habe:

    /************************************************** ************************
    *
    * File Name: kollisiontest.c
    * Project : ASURO
    *
    * Description: Kollisionstest mit Hilfe der Tastensensoren
    *
    * Ver. Date Author Comments
    * ------- ---------- ----------------- -----------------------------
    * 1.0 10.09.2005 Peter initial build
    * 1.1 08.01.2006 Peter 2x PollSwitch + Vergleich,
    anstelle 8x PollSwitch
    *
    * benoetigt die modifizierte Asuro Bibliothek 'asuro.c'
    * von waste, stochri und andun. Zu finden bei www.roboternetz.de
    */
    /************************************************** *************************
    * *
    * This program is free software; you can redistribute it and/or modify *
    * it under the terms of the GNU General Public License as published by *
    * the Free Software Foundation; either version 2 of the License, or *
    * any later version. *
    ************************************************** *************************/

    #include "asuro.h"

    /* Um eventuelle Unterschiede zwischen linken und rechtem Motor auszugleichen
    * definieren wir 2 Werte für fullspedd links und rechts
    */
    #define FULL_L 250 /* Fullspeed linker Motot */
    #define FULL_R 220 /* Fullspeed rechter Motor */

    /* Motor vorwärts */
    void MotorFwd(void)
    {
    MotorDir(FWD,FWD);
    MotorSpeed(FULL_L,FULL_R);
    }

    /* Motor rückwärts */
    void MotorRwd(void)
    {
    MotorDir(RWD,RWD);
    MotorSpeed(FULL_L,FULL_R);
    }

    /* Motor rückwärts Links */
    void MotorRwdL(void)
    {
    MotorDir(RWD,RWD);
    MotorSpeed(FULL_L,0);
    }

    /* Motor rückwärts Rechts */
    void MotorRwdR(void)
    {
    MotorDir(RWD,RWD);
    MotorSpeed(0, FULL_R);
    }

    /* Motor stop */
    void MotorStop(void)
    {
    MotorSpeed(0,0);
    }

    int main(void)
    {
    unsigned char t1, t2;

    Init();
    while(1)
    {
    t1 = PollSwitch();
    t2 = PollSwitch();
    if(t1 == 0 && t2 == 0) /* keine Taste */
    {
    MotorFwd(); /* vorwärts fahren */
    FrontLED(ON);
    BackLED(OFF,OFF);
    }
    else if (t1 && t2 && t1 == t2)
    {
    MotorStop();
    if(t1 & 0x07) /* Tasten links gedrückt? */
    {
    MotorRwdL(); /* Rückwärtskurve links fahren */
    FrontLED(OFF);
    BackLED(ON,OFF);
    }
    if (t1 & 0x3 /* Tasten rechts gedrückt? */
    {
    MotorRwdR(); /* Rückwärtskurve rechts fahren */
    FrontLED(OFF);
    BackLED(OFF,ON);
    }
    Msleep(1000); /* 1 Sekunde fahren */
    }
    }
    return 0;
    }

    thx für die antworten
    night989

  6. #6
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hi,
    in den Variablen t1 und t2 werden die Tasterwerte abgelegt (Rückgabewert der Funktion PolSwitch) und diese beiden Werte verglichen. Nur wenn 2x der selbe Wert gelesen wurde, wird der Wert akzeptiert. Ist leider notwendig, da manchmal falsche Werte gelesen werden.
    Die Taster selbst sind bit-orientiert. In einem Character stecken also die Werte für alle 6 Taster. 1 bedeutet Taster gedrückt, 0 bedeutet nicht gedrückt. Die 3 linken Tasten werden mit Binär 00000111, Hexadezimal 0x07 maskiert, die 3 rechten Taster mit 00111000, Hexadezimal 0x38. Ist der Vergleich ungleich 0 ist eine der Tasten gedrückt.

    Void bedeutet übersetzt Null, nichts, ungültig, ohne. Die Funktion
    void MotorFwd(void)
    benötigt keine Übergabe Parameter und liefert auch keinen Rückgabewert zurück.

    Ich empfehle dir erst mal die Grundlagen in C zu erlernen. Entweder ein Tutorial oder ein Buch.

    Gruß m.a.r.v.i.n

Berechtigungen

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