-         

Ergebnis 1 bis 3 von 3

Thema: Noch ein Thema zu Linienverfolgung^^

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    02.04.2008
    Ort
    Feldthurns
    Alter
    26
    Beiträge
    37

    Noch ein Thema zu Linienverfolgung^^

    Anzeige

    Hallo RN-Crew!

    Ich weis, es gibt bereits unzählige Threads zum Thema Linienverfolgung in diesem Thema, aber leider habe ich keines gefunden, in das ich meine Frage stecken könnte^^
    also, was solls^^

    zu meiner frage:
    ich habe gerade meinen asuro neu bekommen und hab meine ersten programme schon geschrieben. Nun bin ich an einer Linienverfolgung dran, (schwarze linie auf weißem grund)

    Ich weis nicht wieso, aber mein asuro macht einfach nicht das was ich im programm von ihm will.
    Es könnte sein dass ich mich im programmieren vertan habe, ich weis aber nicht was im code falsch sein sollte.

    nun denn.
    als erstes filtere ich softwaretechnisch das umgebungslicht vom diodenlicht, dann kommt erst das mit den motoren.

    Code:

    Code:
    #include "asuro.h"
    #define GESCHW	150
    
    void main(){
    
    int lData[2];
    int i, donl, doffl, donr, doffr, l, r;
       Init();
       MotorDir(FWD,FWD);
       while(1)
       {
       FrontLED(OFF);		// Umgebungslicht filtern
       LineData(lData);		//
       doffl = (lData[0]);	//
       doffr = (lData[1]);	//
       FrontLED(ON);		//
       LineData(lData);		//
       donl = (lData[0]);	//
       donr = (lData[1]);	//
       l = donl - doffl;	//
       r = donr - doffr;   // r und l sind nun die werte von T9 und T10 mit gefiltertem Umgebungslicht
       i = (l+r)/2;
       
       if (l>r)
       {
       MotorSpeed(GESCHW +i, GESCHW -i);
       }
       else
       {
       MotorSpeed(GESCHW -i, GESCHW +i);
       }
       
       }               
       return 0;
    }

    Findet ihr hier etwas das ich übersehe?

    vielen vielen dank!!

    -xtremecoder

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.781
    Blog-Einträge
    8
    Hallo

    LEDs kann man nicht "schlagartig" ein- oder ausschalten. Sie brauchen etwas Zeit bis sie hell sind und sie leuchten nach dem Ausschalten nach. Deshalb sollte nach jedem Wechsel der FrontLED eine kurze Verzögerung eingebaut werden (ein paar sleep()s). Außerdem sollte man LineData() dann besser zweimal hintereinander aufrufen, denn gelegentlich stimmen die Werte beim ersten Aufruf nicht.

    Wenn man dann noch diese Abfrage verwendet: "if (l<r)" dann klappt's auch mit dem Linienfolgen:
    Code:
    #include "asuro.h"
    #define GESCHW   150
    
    int main(void){
    
    int lData[2];
    int i, donl, doffl, donr, doffr, l, r;
       Init();
       MotorDir(FWD,FWD);
       while(1)
       {
       FrontLED(OFF);      // Umgebungslicht filtern
    	Sleep(10);          // kurz warten bis LED aus
    	LineData(lData);      //
       LineData(lData);      //
       doffl = (lData[0]);   //
       doffr = (lData[1]);   //
       FrontLED(ON);      //
    	Sleep(10);         // kurz warten bis LED an
       LineData(lData);      //
       LineData(lData);      //
       donl = (lData[0]);   //
       donr = (lData[1]);   //
       l = donl - doffl;   //
       r = donr - doffr;   // r und l sind nun die werte von T9 und T10 mit gefiltertem Umgebungslicht
       i = (l+r)/2;
    
       if (l<r) // gegenlenken
       {
       MotorSpeed(GESCHW +i, GESCHW -i);
       }
       else
       {
       MotorSpeed(GESCHW -i, GESCHW +i);
       }
    
       }
       return 0;
    }
    Mein asuro hat eine stärkere FrontLED und eine kürzere Endübersetzung im Getriebe und folgt mit deinem Code der Linie vorbildlich. Glückwunsch zu diesem gelungenen Programmansatz:


    http://www.youtube.com/watch?v=gYAzFp7Hc4Y

    btw: Mit "int main(void){" gibts keine Warnungen mehr.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    02.04.2008
    Ort
    Feldthurns
    Alter
    26
    Beiträge
    37
    Vielen dank radbruch!
    Ich werde dieses programm in den nächsten tagen versuchen weiterzuentwickeln und dann poste ich was dabei rausgekommen ist.

    danke

Berechtigungen

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