PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm schreiben



TommyGT
25.09.2008, 18:57
Hi

Habe meinen Asuro zusammengebaut und alles funktioniert. Jetzt wollte ich ein Programm schreiben, dass den Asuro so lange fahren lässt, bis er an eine schwarze Linie kommt. Leider weiß ich nicht so recht, wie ich das machen muss. Bin dankbar für jede Hilfe.

Gruß
Thomas

radbruch
25.09.2008, 19:17
Hallo Thomas

Willkommen im RN-Forum und herzlichen Glückwunsch zum funktionierenden asuro.


Leider weiß ich nicht so recht, wie ich das machen muss.

Du weißt nicht wie man ein Programm schreibt (und es auf den asuro bringt) oder du weißt nicht, wie man die Linie findet?

Programm schreiben und flashen (=auf den asuro laden) wird in der Anleitung ab Seite 35 beschrieben. Auswerten der Liniensensoren ab Seite 64. Der Ablauf könnte dabei etwa so aussehen: Beide Sensoren auf heller Fläche einlesen, Werte addieren und abspeichern. Losfahren und dabei die Werte erneut einlesen und mit den gespeicherten Werten vergleichen. Wenn aktuelle Werte deutlich kleiner als eingelesene Werte sind: Stop!

Noch ein paar Infos zur Ausgabe der Linienwerte:
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=39242

Viel Spass und Erfolg

mic

TommyGT
25.09.2008, 19:32
Danke für die Antwort. Hat irgendwer vielleicht so eine Programmierung fertig, damit ich mal ein Beispiel habe, wie es auszusehen hat?

damaltor
26.09.2008, 02:06
benutze die suchfunktion. oder fang einfach mal an, und dann zeig uns was du hast. dann können wir dir gern helfen...

Weiti
26.09.2008, 09:01
hast du schon mal mit was einfachem angefangen? so wie ein rechteck fahren? oder kreise? Tasterabfragen?
Bei mir war es so, das ich mich nicht gleich an die odometrie wagen konnte, so ganz ohne programmiererfahrungen.

TommyGT
28.09.2008, 17:54
Ich habe die Anleitung mal durchgelesen, aber so richtig bringt mich das nicht weiter. Weiß einfach nicht, wie ich das anfengen soll.

oberallgeier
28.09.2008, 19:00
Willkommen im Forum.

Kannst Du denn C? Oder lernst Du das erst?

Es gibt zahllose Programme für den asuro hier im forum und sonstwo. Hol Dir eines, möglichst kurz, und geh das mal durch. Dann lernst Du auch den asuro kennen. Vielleicht findest Du ja eins, das das macht, was Du willst.

TommyGT
28.09.2008, 19:12
Ich lerne es erst. Blicke da noch nicht richtig durch.

hai1991
28.09.2008, 19:15
bei was genau kennst du dich nicht richtig aus?
wie ein programm aufgebaut ist, wie man die daten der liniensensoren auswertet, oder woran scheiterst du?

radbruch
28.09.2008, 19:36
Hallo

Da dir scheinbar weder das Kompilieren noch das Flashen Probleme bereitet fehlt dir vielleicht nur noch ein Grundgerüst:


#include "asuro.h"

int main(void)
{

uint16_t i;

Init();

StatusLED(RED);
FrontLED(ON);

while(i--) Sleep(72);

while(1)
{
StatusLED(YELLOW);
i=500;
while(i--) Sleep(72);
StatusLED(GREEN);
for(i=0;i<1000;i++) Sleep(72);
}
return(0);
}
(Die Warnung beim Kompilieren ist übrigends gewollt. Warum?)

Gruß

mic

damaltor
28.09.2008, 20:00
welche warnung ist gewollt? die das i nicht initialisiert wurde? das ist nicht gewollt, das ist ein fehler... du musst vor while(i--) auch schreiben was in i reinkommt...

radbruch
28.09.2008, 20:26
du musst vor while(i--) auch schreiben was in i reinkommt...
..., aber nicht, wenn ich hier die Verzögerung etwas pseudozufällig gestalten wollte. Dann ist die Dauer der Verzögerung vom Speicherinhalt des Rams beim Einschalten abhängig. (Könnte doch sein, habe ich nicht überprüft.)

Ach, noch 'ne Frage: Was ist denn der Unterschied zwischen der FOR- und der WHILE-Formulierung?

oberallgeier
28.09.2008, 22:19
... Was ist denn der Unterschied zwischen der FOR- und der WHILE-Formulierung ...Das stelln wa uns mal jaans dumm und kukken mal in dat juute Buch von Kernighan und Ritchie rein - und da sehn wa, dat is ne lanje Jeschichte.

Mal ganz simpel: bei

while ( expression )
statementwird expression geprüft und statement ausgeführt, wenn expression von 0 verschieden ist. Bei

for ( expr1 ; expr2 ; expr3 )
statement... ist expr2 ein Vergleich, und in aller Regel sind expr1 und expr3 Zuweisungen - - - usf. Es gibt also (die an sich bekannten, syntaktischen) Unterschiede.

Ich glaub am deutlichsten wird Deine Frage beantwortet durch ein Zitat aus K&R: Ob man while oder for bevorzugt, beruht weitgehend auf persönlicher Vorliebe.

TommyGT
29.09.2008, 21:27
Mein erstes Problem ist, wie ich ein Programm zu stande bringe. Das klingt doch alles recht kompliziert.

oberallgeier
29.09.2008, 22:52
Mein erstes Problem ist, wie ich ein Programm zu stande bringe. Das klingt doch alles recht kompliziert.Lies Dir doch mal die Anleitung im asuro-Handbuch durch. Das Handbuch kannst Du hier downloaden. (http://www.arexx.com/downloads/asuro/asuro_manual_de.pdf) Dort steht ein Abschnitt darüber, wie man in C ein Programm schreibt.

Dann kannst Du Dir hier verschiedene Programme (http://home.planet.nl/~winko001/Asuro/Software/AsuSfwPagFrm.htm) - auch als Quellen - holen. Die kannst Du durcharbeiten, versuchen zu verstehen, compilieren und auf den asuro flashen. Und auf dieser Seite (http://www.arexx.com/arexx.php?cmd=goto&cparam=p_asuro_downloads) gibts noch ein paar interessante Dinge.

Kann schon sein, dass das alles für Dich (erstmal) kompliziert klingt. Das war es für mich auch. Ich musste erst C lernen UND Elektronik und alles das. Es geht schon!