- 12V Akku mit 280 Ah bauen         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: Linienverfolgung mit verschieden geschwindigkeiten via IR

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Anzeige

    E-Bike
    Du hast gesagt Asuro reagiert auf deinem senden des A zeichens. Aber reagiert er eigentlich schon auf dem anderen zeichen (b,c,d). Das wurde vieleicht auch ein bisschen erklären wie die compiler deine

    Code:
    if else(input[0]=='b')
    { 
    a = 180; 
    }
    ergänzt hat.

    Aber es könnte naturlich auch so sein dass Asuro nur dass linien spur verloren hat wenn einer seiner rader nicht mehr dreht/gebremst wird. Wie reagiert er mit einer kleineren MotorSpeed differenz?

  2. #12
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    33
    Beiträge
    239
    hallo

    kann es sein, dass dieses problem mit der variablen geschwindigkeit nicht so einfach zu lösen ist?
    denn bei SerRead() wartet der prozessor doch so lange, bis er ein zeichen bekommmt.
    wenn du nun den asuro einschaltest und keine taste drückst bekommt natürlich SerRead() auch nichts, dh. der prozessor wartet. in dieser zeit kann er aber nicht gleichzeitig auch noch die linienverfolgung ausführen.
    das wäre auch die erklärung, wieso diese alleine funktioniert hat und so nicht
    mfg hai1991

    P.S.: wer großbuchstaben oder rechtschreibfehler findet darf sie behalten

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    25.02.2009
    Beiträge
    8
    hmm ja das ist klar. Doch der Roboter fährt sobald ich einer dieser abfragenden Tasten drücke, Jedoch liest er nicht die Sensoren aus, sondern dreht entweder das rechte Rad mit der gewünschten Geschwindigkeit oder das linke mit der Gesch. oder beide. Aber er wechselt nicht ab nach den werten die er mit den Sensoren einliest
    bin echt ratlos was das sein könnte.

  4. #14
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Hast du schon dein program compiliert mit der neuen lib, oder redest du noch von deiner erste version? Oder die mit "b = geschw_einlesen();" drin?

    Dieser letzte version konnte etwas mehr Serwrite als debug code brauchen. Die geschw_einlesen funktion liest deine kommando zeichen ein, und bearbeitet das. Aber das emphangene zeichen wird niemahls zuruck gesendet. Nur "ok1" usw. wenn das emphangene zeichen sinn gemacht hat (also, es war ein "a","b","c" oder "d"). Aber wie bist du zicher ob diesen richtigen zeichen uberhaupt korrekt reinkommen? Das ist wichtig beim debuggen. Da konnte immer kommunikations fehler sein. Sicher wenn du mit dem IR modul hinter her rutschen muss. Ich hoffe du setzt ihn mit dem radern hoch von deinem tisch, und dichselbts auf einer stuhl.

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    02.01.2008
    Alter
    33
    Beiträge
    239
    genau das wollte ich dir erklären.

    in der endlosschleife (while(1)) rufst du erst die funktion geschw_einlesen() auf. dabei wartert der prozessor so lange, bis er einen buchstaben übermittelt bekommmt. vohrer kommt er in deinem code nicht weiter.
    wenn er dann eine geschwindigkeit hat (ein buchstabe wurde empfangen), geht es weiter zum einlesen der liniensensoren und die geschwindigkeiten der motoren werden dem entsprechend gesetzt.
    danach geht es in der endlosschleife wieder von vorne los. dh. der prozessor wartet auf einen buchstaben. solange du keinen ein gibst kommter der prozessor im code nicht weiter (er ist in der funktion geschw_einlesen() "gefangen").
    erst wenn du wieder einen buchstaben eintippst werden wieder die liniensensoren eingelesen. daher wird auch nicht korrigiert!!

    eine mögliche lösung wäre, dass du das empfangen eines buchstaben vor die endlosschleife schreibst. dann kannst du zwar nur am anfang eine geschwindigkeit festlegen, dafür funktioniert aber die linienverfolgung.

    eine andere möglichkeit das zu realisieren fällt mir gerade nicht ein
    mfg hai1991

    P.S.: wer großbuchstaben oder rechtschreibfehler findet darf sie behalten

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    25.02.2009
    Beiträge
    8
    hehe lustig bin gestern noch bis 12 uhr dran geklebt und bin genau auf diese lösung gekommen nun arbeite ich dran das ich trotzdem wieder au der while schleife komme um einen anderen buchstaben einzulesen. habe es mit brake versucht doch scheinbar kennt dieser compiler respektiv header diesen befehl nicht. oder doch? oder war es continue? ist schon lange her als wir c programme in der schule geschrieben haben

    aber ich danke dir schon einmal für deine mitinteresse, echt cool diese forum

  7. #17
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    SerRead(input,1,0);

    Die letzte parameter ist einer art time-out wert. Wenn es nicht-nul ist muss es schon weiter gehen nach einer beliebige anzahl nicht empfangene zeichen.

    Aber das habe ich auch nur jetzt raus gefunden. Immer die asuro.c (von Arexx lib oder die erweiterten lib quellcode) durchsuchen und studieren!

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

12V Akku bauen