-         

Ergebnis 1 bis 8 von 8

Thema: Asuro Linienverfolgung....

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.10.2008
    Beiträge
    234

    Asuro Linienverfolgung....

    Anzeige

    hi hab nach längerer zeit mal wieder meinen asuro vom regal geholt.
    habe dann versucht ihn dieses programm abarbeiten zulassen:
    Code:
    #include “asuro.h” // Linienverfolgung auf die einfachste Art
    int main(void) {
    unsigned int data[2]; //Speicher bereitstellen
    Init();
    FrontLED(ON); // Linienbeleuchtung einschalten
    MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
    while(1){ // Endlosschleife, ASURO soll beliebig
    // lang einer Linie nachfahren
    LineData(data); // aktuelle Helligkeitswerte der
    // Fototransistoren einlesen
    if (data [0] > data [1] ) // links heller als rechts...
    {MotorSpeed(200,150);} // ... dann links mehr Gas geben...
    else
    {MotorSpeed(150,200);} // ... sonst rechts mehr Gas geben!
    }
    return 0;
    }
    Er fährt aber nur nach Links (im kreis)....

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.10.2008
    Beiträge
    234
    Brauche noch Hilfe bei einem meiner andren Programme...
    Code:
    #include "asuro.h"
    int main(void) {
    Init();
    StatusLED(RED);
    MotorDir(FWD,FWD);
    MotorSpeed (180,180);
    if (PollSwitch(2)) {
    MotorDir(RWD,RWD);
    MotorSpeed(150,150);
    Sleep (216);
    MotorDir(FWD,FWD);
    MotorSpeed(180,130);
    Sleep (216);
    MotorSpeed(180,180);
    }
    else if (PollSwitch(5)) {
    MotorDir(RWD,RWD);
    MotorSpeed(150,150);
    Sleep (216);
    MotorDir(FWD,FWD);
    MotorSpeed(130,180);
    Sleep (216);
    MotorSpeed(180,180);
    }
    while(1); // Endlosschleife
    return 0;}
    Wenn ich dieses Prog. kompilieren will bekomme ich immer folgende Fehlermeldung:
    Code:
    -------- begin --------
    avr-gcc --version
    avr-gcc (GCC) 3.3.1
    Copyright (C) 2003 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
    test.c: In function `main':
    test.c:7: error: too many arguments to function `PollSwitch'
    test.c:16: error: too many arguments to function `PollSwitch'
    make: *** [test.o] Error 1
    
    > Process Exit Code: 2
    Need help! Ich krieg das echt nit hin

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Zitat Zitat von murdocg
    Brauche noch Hilfe bei einem meiner andren Programme...
    Code:
    ...
    if (PollSwitch(2)) {
    ...
    else if (PollSwitch(5)) {
    ...
    Wenn ich dieses Prog. kompilieren will bekomme ich immer folgende Fehlermeldung:
    Code:
    ...
    test.c: In function `main':
    test.c:7: error: too many arguments to function `PollSwitch'
    test.c:16: error: too many arguments to function `PollSwitch'
    ...
    Need help! Ich krieg das echt nit hin
    Ist doch klar vom error log. Was hast du mit dem 2 und 5 vor? Die Pollswitch()-funktion gibt ein binaire summe der tasten zuruck. Mann kan nicht wählen welcher taste er misst. Im If-statement sollte man genau testen welcher werte das ist. Etwa wie

    if(Pollswitch()==1)

    Aber such mal auf "Pollswitch()" im forum wie andere leute das gebraucht haben. Das obene ist nicht optimal.

    Dabei, einer if-statement wirds nur 'true' wenn die test (oder zuruckgabe wert einer funktion) nicht_nul ist. Also 'if (1)' ist 'true', aber auch 'if (204', oder 'if (-1)'. 'if (0)' ist 'false'.

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.10.2008
    Beiträge
    234
    Okai. Verstanden habe ich das nicht. Kannst du, wenn die Funktionen meines Programms klar sind, mir mal eine Verbesserte Veriosn posten. Im Vergleich von richtig Falsch, versteh ichs oclhe Sachen immer besser.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Ok, suchen nach eine gutes beispiel war nicht zo einfach, muss ich erkennen. Aber ScWeiNePaPSt.xD hat ein gutes beispie hier mit Pollswitch(). Besser vieleicht die code von Radbruch an zu schauen, weil es etwas 'logisch'-er ist. http://www.roboternetz.de/phpBB2/zei...ght=pollswitch

    Erst wird Pollswitch mehrmahls abgefragt und in einem variablen gespeichert.

    t1 = PollSwitch();
    t2 = PollSwitch();

    Diesen variabblen werden dan verglichen ob die tasten stabiel sind.

    if((t1 == 0) && (t2 == 0)) [stabiel keine tasten]

    oder

    else if (t1 && (t1 == t2)) [stabiel irgend welcher tasten sind angeschtossen]

    Und dann werden die tasten genau getested welcher kombination von tasten das sind:

    if (t1 & 0x3 [tasten sind: 38 hex = 56 decimal= 32+16+8 decimal]

    Leider vergesse ich immer ob das die tasten am linker oder rechter seite sind.

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    K6 (mit PollSwitch()-Wert 1) ist neben dem Schalter S1:
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken asuro-k6_156.jpg  

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.12.2008
    Ort
    Dresden
    Alter
    30
    Beiträge
    100
    hi...

    ich habe in diesem thread einmal gepostet, wie man die tasterabfrage richtig schön implementieren kann und so läuft sie bei mir auch 100%ig exakt.

    vielleicht hilfts dir ja...

    lg, malediction

    (edit: @valen: man kann sich die anordnung ganz leicht merken: du liest ja eine 6-stellige binärzahl aus (oder vllt auch 8, wobei die beiden msbs dann nicht interessieren). und die sieht beispielsweise so aus: 001000. dabei ist das erste bit ganz links genau der linke taster, wenn du von hinten (also vom batteriefach aus) über asuro schaust, und das ganz rechte eben der rechte taster. also ist in meinem beispiel der 3. taster von links gedrückt. das ist meine eselsbrücke dabei.)
    Der Optimist: \"Das Glas ist halb voll.\"
    Der Pessimist: \"Das Glas ist halb leer.\"
    Der Ingenieur: \"Das Glas ist doppelt so groß wie es sein müßte.\"

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Danke dir beiden, nun werde ich es niehmals mehr vergessen.

Berechtigungen

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