-         

Ergebnis 1 bis 4 von 4

Thema: ASURO LineData

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    02.03.2006
    Beiträge
    67

    ASURO LineData

    Anzeige

    Hallo zusammen,

    Ich bin seit gestern stolzer Besitzer eines ASURO. Echt super der Kleine.
    In der Dokumentation steht, dass die Funktion LineData für rechts und links jeweils Werte von 0 bis 1023 zurückgeben kann.
    Für ein Linienfolgeprogramm wollte ich jetzt mal nachschauen welche Werte dort zurückgegeben werden, wenn ich ein Stück Papier unter dem ASURO hin und herschiebe.
    Dafür wollte ich mit SerWrite mit dem PC kommunizieren. Ausschnitt aus dem Programm:

    Code:
    void CheckLine(void) {
        unsigned int data[2];
        FrontLED(ON);
        LineData(data);
        Serwrite(data[0],4);
        Serwrite(data[1],4);
    }
    Das ergibt nur kryptische Zeichen, kann mir jemand sagen wie ich die Daten in einen vernünftige Datentyp umwandeln kann? Am besten mit Zeilenumbruch \n (geht nur bei Strings!?). Sorry, bin noch nicht so erfahren in C.

    Vielen Dank =)
    Gruß
    Julian

  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,
    schaut so aus, das von LineData zweimal 16Bit zurückkommen, wenn man diese Werte direkt ausgibt, gibts komische Zeichen.
    zB. das Ergebnis ist 133, dieser Wert über die Serielle Schnittstelle, wird vom PC als Zeichen erwartet, also könnte je nach Zeichensatz ein à ankommen, weil das dem Wert 133 entspricht !

    Um die Werte in Klartext darzustellen musst Du die Werte erst in ASCII wandeln, zB mit itoa();
    Es gibt auch schon eine erweiterte Asuro-lib, da ist ein PrintInt() dabei, einfach mal die Forum-Suche anwerfen.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    02.03.2006
    Beiträge
    67
    Ich hab mir vorhin schon nen Ast gegoogelt und bin dann irgendwann auch auf das itoa gestoßen.

    Mein Script ist ja nur provisorisch um die Werte auszulesen.
    Es sieht so aus:

    Code:
    // ** by JulianKraemer.de ** //
    
    #include "asuro.h"
    
    void CheckLine(void) {
        char output_l[4], output_r[4];
        unsigned int data[2];
        FrontLED(ON);
        LineData(data);
        itoa(data[0], output_l, 10);
        itoa(data[1], output_r, 10);
        SerWrite("links:",6);
        SerWrite(output_l,4);
        SerWrite("rechts:",7);
        SerWrite(output_r,4);
    }
    
    int main(void) {
        unsigned char taste;
        Init();
        StatusLED(GREEN);
        while(1) {
            taste = Pollswitch();
            if(taste > 0) {
                SerWrite("\n-----\n",7);
                CheckLine();
            }
        }
        return 0;
    }
    Sobald man irgendeinen der Kontakttaster betätigt, werden am PC die entsprechenden Werte der beiden Fototransistoren angezeigt.
    So kann man bequem den ASURO auf einer Unterlage ausrichten (oder umgekehrt) und dann zu einem beliebigen Zeitpunkt die Werte anzeigen lassen.

    Ich habe bei mir die Schreibtischlampe ausgeschaltet, sodass (fast) nur noch die FrontLED für das Licht an den Fototransistoren sorgt. So habe ich recht stabile Messwerte bekommen.
    Allerdings sind die Werte von T9 um ca. 50 höher als bei T10. Bei mir hatte ich jetzt sehr oft die Werte:
    Links: 169
    Rechts: 122

    Wenn ich ein Linienfolgeprogramm schreibe, muss ich sowas natürlich berücksichtigen. Die Differenz ändert sich aber leider je nach Umgebungslicht.
    Weiß da jemand weiter!?

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    29.04.2005
    Ort
    Weilburg
    Beiträge
    676
    Schau doch mal dn:
    http://www.roboternetz.de/phpBB2/zei...=123226#123226
    Da ist ein Testprogramm für die Linienfolger-Sensoren
    Und da ist auch schon mal eine sehr gute Lösung von Waste zu sehen.
    Prostetnic Vogon Jeltz

    2B | ~2B, That is the Question?
    The Answer is FF!

Berechtigungen

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