-
        

Ergebnis 1 bis 3 von 3

Thema: Linie verfolgen + Objekt ausweichen

  1. #1

    Linie verfolgen + Objekt ausweichen

    Anzeige

    Hey
    ich wollte mit dem Asuro einer Linie folgen und einem Hindernis ausweichen.
    Die Linienverfolgung hab ich soweit auch hinbekommen, ich weiß jetzt allerdings nicht wie ich weitermachen kann das er wenn er gegen ein Objekt fährt erst kurz rückwarts und dann um das objekt herumfährt also quasi nen halbes rechteck.

    Code:
    #include "asuro.h" 
    #include <stdlib.h> 
    
    
    int main(void) 
    { 
    	unsigned int lineData[2];
    
    	int korrektur = 5;
    	
    	
    	FrontLED(ON);
    	Init(); 
    	MotorDir(FWD,FWD); 
    	
    	while(1)
    	{ 
    
    		LineData(lineData); 
    		
    		unsigned char taste;
    		taste = PollSwitch();
    		
    		if(taste>0)
    		{
    		MotorSpeed(0,0);
    		Sleep(255);
    		MotorDir(RWD,RWD);
    		MotorSpeed(255,255);
    		
    		
    		}
    		
    		else
    		{
    		
    		if(lineData[0]>lineData[1])
    		{	
    			BackLED(ON,OFF);
    			MotorSpeed(150,90); 
    		}
    
    		
    		if(lineData[1]>lineData[0])
    		{	
    			BackLED(OFF,ON);
    			MotorSpeed(90,150); 
    		}
    		
    		}
    
    	} 
    }
    Hab erstmal gemacht das er nur Rückwärts fährt aber ich krieg es nicht hin mit dem Rechteck.
    wär nett wenn ihr mir helfen könntet.

    mfg

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    10.05.2010
    Beiträge
    38
    Benutz die neuste Asuro Library.
    Da haste auch Funktionen um genau fahren und drehen zu können.

    Und wäre es nicht einfacher einen Bogen um das Hindernis zu fahren?


    Bzw. Hier hilft dir eh niemand. Hat mir auch niemand...
    (Ausser der Typ der AsuroFlash programmiert hat)
    Da bist du schneller wenn du dich selbst informierst und herumprobierst.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.03.2009
    Beiträge
    20
    Hallo billyboy,


    Double_A schrieb:
    Bzw. Hier hilft dir eh niemand. Hat mir auch niemand...
    (Ausser der Typ der AsuroFlash programmiert hat)
    Da bist du schneller wenn du dich selbst informierst und herumprobierst.
    ---------

    Dem möchte ich mal auf das Heftigste widersprechen. Hier wird einem auf jeden Fall geholfen.
    Nur kann man nicht erwarten, dass auf jedes "Problemchen" innerhalb von Minuten geantwortet wird. Da verwechselst du das Forum offensichtlich mit einer Hotline. Jeder der hier antwortet, tut das freiwillig, unentgeltlich und aus Interesse. Offensichtlich auch du.
    Ich gebe dir recht, daß man oftmals schneller ist, wenn man selbst herumprobiert. Das hat dann sogar den Vorteil, daß man dabei etwas lernt. Oder solltest du der Meinung sein, man sollte hier hunderte von fertigen Lösungen parat haben, die man sich einfach herunterlädt, in den Asuro schießt und dann zuschaut wie er vor sich hin werkelt?
    Wie langweilig!

    Double_A schrieb:
    Benutz die neuste Asuro Library.
    Da haste auch Funktionen um genau fahren und drehen zu können.
    ---------

    Das ist Quatsch, hat nichts mit dem "Problemchen" zu tun und ist daher völlig überflüssig.


    Des Lerneffekts wegen werde ich daher auch nur einige Tipps geben das "Problemchen" zu lösen, frei nach dem Sinnspruch:
    Zeige jemandem, wie es geht und er hat dieses Problem gelöst. Lehre jemandem ein Problem zu lösen und er wird fähig sein, viele Probleme zu lösen.

    Also:
    Mit etwas Lesen und stöbern hier im Forum wird man darauf kommen, daß diese Anweisung
    if(taste>0)
    nur minder gut ist.
    Hinweis :
    Wie funktioniert die Tasterabfrage beim Asuro
    Störung der analogen Eingangskanäle
    Was für ein Effekt kann auftreten, falls taste einen falschen Wert annimmt
    Warum ist diese Reihenfolge der Anweisungen von Vorteil
    t1 = PollSwitch();
    t2 = PollSwitch();

    if(t1 == t2)

    Wie immer macht der Asuro genau das, was man sagt, was er tun soll und nicht was man wünscht, was er tun soll.
    Wenn eine Taste betätigt wird, hält er für eine gewisse Zeit an mit
    Sleep(255);
    und fährt dann rückwärts
    MotorDir(RWD,RWD);
    MotorSpeed(255,255);

    Allerdings nur sehr, sehr, sehr, sehr kurz
    Warum? Hmmmm!

    Ich denke mal, das hilft etwas weiter. Wenn nicht, einfach nochmal fragen.

    Viel Erfolg
    Skroete

Berechtigungen

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