Siehe Band 2 des Buches "Mehr Spaß mit ASURO" und hier:
https://www.roboternetz.de/phpBB2/ze...eradeausfahren
https://www.roboternetz.de/phpBB2/ze...eradeausfahren
Hi,
mein Asuro soll heut lernen wie er Geradeaus fährt. Dafür hab ich erstmal gestestet, wie schnell welches Rad sein muss.(Durch unterschiedliche Reibung)
So jetzt hab ich ein kleines Programm geschrieben:
Das Programm soll so funktionieren:Code:#include "asuro.h" int main(void) { int l=0; int r=0; int sleft=0; int sright=0; unsigned int data[2]; Init(); MotorDir(FWD,FWD); MotorSpeed(150,165); OdometrieData(data); while(1) { if (sleft!=1 && data[0]<700 && l<10) { sleft=1; l++; } if (sleft==1 && data[0]>700 && l<10) { sleft=2; l++; } if (sright!=1 && data[1]<700 && r<10) { sright=1; r++; } if (sright==1 && data[1]>700 && r<10) { sright=2; r++; } else if (r>l) { MotorSpeed(190,165); r=0; l=0; } else if (r<l) { MotorSpeed(150,190); r=0; l=0; } } return 0; }
Immer wenn ein hell/dunkelwechsel ist, zählt das Programm mit. Wenn auf einer Seite 10 Hell/Dunkelübergänge gezählt wurden, soll Asuro nachschauen auf welcher Seite mehr Übergänge da waren--> auf der anderen Seite soll er mehr Gas geben.
Irgendwie hab ich das falsch programmiert, kann mir wer da Tips zur Verbesserung geben?
Mfg Moebius
Siehe Band 2 des Buches "Mehr Spaß mit ASURO" und hier:
https://www.roboternetz.de/phpBB2/ze...eradeausfahren
https://www.roboternetz.de/phpBB2/ze...eradeausfahren
danke für die links.
ich hab mein programm jetzt verbessert, asuro fährt jetzt schon mehr geradeaus als im kreis ^^.
hier nochma der verbesserte code:
So als nächstes werd ich versuchen, exakt die hell/dunkelübergänge zu erfassen, und solang auf der anderen Seite Gas geben, bis wieder die gleiche Anzahl verstrichen sind. Mal schauen ob das klappt [-(Code:#include "asuro.h" int main(void) { int l=0; int r=0; int cnt; int sleft=0; int sright=0; unsigned int data[2]; Init(); MotorDir(FWD,FWD); MotorSpeed(150,170); OdometrieData(data); while(1) { r=0; l=0; while(l<5) { if (sleft!=1 && data[0]<700 ) { sleft=1; l++; } else if (sleft==1 && data[0]>700 ) { sleft=2; l++; } if (sright!=1 && data[1]<700 ) { sright=1; r++; } else if (sright==1 && data[1]>700 ) { sright=2; r++; } } if (r>l) { MotorSpeed(200,165); break; } if (r<l) { MotorSpeed(150,210); break; } } return 0; }
Hier ist noch ein Programm für diese Aufgabe:
http://www.apeshow.de/2007/01/22/odo...hrt-geradeaus/
Also mit echtem Programmieren hat das doch nun nichts mehr zu tun. Ein paar Zeilen Code und Zugriff auf die geballte-rn-forumpower-lib machen den asuro für jeden zahm und gefügsam.
Auf der einen Seite soll derjenige seinen asuro weiterverkaufen der nicht jedes ATMegabit mit Vornamen kennt. Auf der anderen Seite wird bei Programmfragen nicht der Code analysiert sondern heftig auf fertige (Kopier-)Lösungen oder das asurobuch verwiesen. Nicht dass ich die Leistung nicht anerkenne, die zusammengetragenen asuro-Infos sind schon klasse. Aber immer wieder nur fertigen Code, Links und Buchhinweise zu posten sieht zwar eifrig aus, hilft aber eben nicht jedem.
sorry fürs offtopic, das wollte ich eben mal loswerden.
@Moebius:
Mein asuro kommt kaum über 700 als Odowert. Hast du dieOdosensoren vor Fremdlicht abgeschirmt? Und hast du das achsiale Spiel des Codescheibenritzels beseitigt?
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
also ich hab aus pappe so ein kleines häuschen um die jeweils 2 dioden gebastelt.
Der Wert 700 passt ganz gut, hab mir vorher ein Testprogramm dafür geschrieben.
Also die Zahnräder haben schon noch ganzschön viel Spiel, das könnt ich noch verbessern [-(
Schön wäre es.Ein paar Zeilen Code und Zugriff auf die geballte-rn-forumpower-lib machen den asuro für jeden zahm und gefügsam.
Gerne geschehen.danke für die links.
Das ist jeweils eine Kombination aus IR-Diode und Fototransistor. Leider funktioniert das nicht im Sonnenlicht.also ich hab aus pappe so ein kleines häuschen um die jeweils 2 dioden gebastelt.
Einfach etwas Lötzinn außen drauf, dann wird der Abstand enger gehalten. Das ist wirklich wichtig.Also die Zahnräder haben schon noch ganz schön viel Spiel, das könnt ich noch verbessern
Er wollte ihn vom Tisch stürzen, wenn er es nicht selbst merkt! Außerdem könnte ich noch einen zusammen gebauten ASURO brauchen.Auf der einen Seite soll derjenige seinen asuro weiterverkaufen der nicht jedes ATMegabit mit Vornamen kennt.
Da gibt es verschiedene Sichtweisen. Ideal ist die Kombination aus beidem. Ich denke, dass man hier im Forum jeweils möglichst viel Code zu einem Thema finden sollte. Da gehören bekannte Bücher und das Internet dazu.... wird bei Programmfragen nicht der Code analysiert sondern heftig auf fertige (Kopier-)Lösungen oder das asurobuch verwiesen.
Lesezeichen