PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linie verfolgen + Objekt ausweichen



billyboy
01.06.2010, 13:17
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.


#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

Double_A
02.06.2010, 15:00
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.

Skroete
02.06.2010, 18:11
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