PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit RP6



Hatzl
30.12.2007, 20:26
Hallo beisammen
ich hab zu Weihnachten den Robby RP6 von Connrad bekommen die Beispiel Programme sind ja ganz nett! Aber jetzt will ich ihn auch gerne selbst Programmiren! hab aber bda so meine Probleme BeispielPrograme Abändern ist nicht so schwer aber wenn ich ein programm selbst schreibe dann muss ich ja zu einer .Hex datei kommen und da komme ich nicht weiter ich kann zwar di .c datei erstellen doch wo muss ich die hinspeichern und wie geht es weiter bitte um eine leicht verständliche antwort weil ich noch sehr jung binn!!!! O:)
danke im voraus und einen guten rutsch! !

Dirk
30.12.2007, 21:42
Hallo Hatzl,

ich würde es am Anfang so machen:
1. Im Verzeichnis Examples\RP6BASE_EXAMPLES erstellst du ein neues Unterverzeichnis.
2. Darein kommt dein neues C-Programm und ein Makefile. Am besten du kopierst ein Makefile eines vorhandenen Demo-Programms, das so ähnlich ist wie dein eigenes Programm.
3. Du startest Programmer's Notepad und erstellst ein neues Projekt in deinem neuen Unterverzeichnis.
4. Mit Add Files fügst du das neue Makefile und dein C-Programm zum neuen Projekt hinzu.
5. Du öffnest das Makefile und änderst die Zeile TARGET = ... so, dass hier der Name deines C-Files steht, und speicherst es wieder ab.

Jetzt kannst du dein C-File weiter bearbeiten und jeweils mit Make all kompilieren. Damit steht dann das Hex-File in deinem neuen Unterverzeichnis und kann mit dem RP6Loader in den RP6 geladen werden.

Gruß Dirk

radbruch
30.12.2007, 22:07
Hallo

Ich weiß, es ist eher kontraproduktiv, aber ich habe mich nie mit dem Notepad und den makefiles rumgequält. Ich hatte mir, nachdem ich winavr installiert hatte, die kostenlose IDE kamavr (http://www.avrfreaks.net/index.php?module=Freaks%20Tools&func=viewItem&item_id=632) installiert. Ich kann's nicht wirklich empfehlen, weil ich keine vergleichbaren Entwicklungsumgebungen kenne, aber ich bin sehr zufrieden damit. Ein guter Editor, Projektverwaltung, Syntaxhighlighting(hebt C-Befehle farblich hervor) und eben einen automatischen makefile-Generator. Für jedes Projekt kann man die Einstellungen angeben und daraus generiert kamavr automatisch ein makefile. Complieren kann man dann auf Knopfdruck. Nachteile: Meine Version hat keine Hilfedatei und das Progamm spricht englisch.

Gruß

mic

roboterheld
31.12.2007, 12:47
....makefiles rumgequält.....

braucht man nicht. in winavr-c gibt es ein schönes programm "mfile" mit menü usw. lässt sich alles einstellen und reinbringen.

was soll daran so schwer sein. ohne ein gutes makefile taugt das beste selbstgeschriebene c-programm nichts.

auch fremde makefile sollte man lesen und verstehen können, da ist weiter nichts anderes drin was der compiler machen soll. so einfach.

Hatzl
31.12.2007, 16:26
naja soganz kapir ich das net ne aber danke für den rat könnt ihr mir mal ein ganz ganz ganz simpeles programm wo ich mal sehen kann wie ein programm aussehen sollte schiken ? und wie komme ich zur .hex file

Hatzl
31.12.2007, 16:28
aso habs kapiert Thx :oops:

Hatzl
01.01.2008, 13:29
der s.c.h.... geht nicht dann kommt so ein fehler code 2 er benötigt irgend eine main.elf datei HILFEEE

SlyD
01.01.2008, 13:54
Hallo Hatzl,

dann hast Du irgendeinen Eintrag im Makefile nicht richtig abgeändert, bzw. der Dateiname ist anders.
Der Eintrag "TARGET" im Makefile muss, wenn Deine Datei z.B. "meinProgramm.c" heisst,
TARGET = meinProgramm
lauten.

Oder die RP6 Library liegt nicht im richtigen Verzeichnis oder...
da gibt es viele Möglichkeiten. Sonderzeichen wie "äö ü" usw. sollten auch nicht in den zugehörigen Datei- und Ordnernamen vorkommen.

--> Hier:
http://www.arexx.com/rp6/downloads/RP6_project_template.zip

Nimm das mal als Ausgangspunkt. Im Verzeichnis "project_template" kannst Du das Verzeichnis "program_01" verwenden bzw. im selben Ordner kopieren und beliebig umbenennen.
Dann musst Du aber wie Dirk schon gesagt hat, das Makefile in dem Ordner anpassen, das PN2 Projekt anpassen (geht schneller wenn man die Projektdatei in einem Texteditor öffnet), usw. - siehe oben.

MfG,
SlyD

Dirk
01.01.2008, 13:59
Hallo Hatzl,

anbei mal die Dateien, die für ein eigenes Projekt nötig sind.

Tu sie alle in ein eigenes Verzeichnis "Test_01_BaseTest" und dieses Verzeichnis in den "RP6BASE_EXAMPLES" Ordner.

Im Programmer's Notepad kannst du dann in "Open Projects" das Projekt "Test_01_BaseTest" auswählen und das Programm beliebig ändern und mit "Make all" neu kompilieren.

Gruß Dirk

Hatzl
01.01.2008, 14:09
könnte ich euch mein programm mal hochladen und ihr es mal ansehen was faul ist? (wäre sehr nett)

Hatzl
01.01.2008, 14:11
bei mir ist in dem ordner .dep nicht s drinnen ist dass schlimm

Dirk
01.01.2008, 14:20
könnte ich euch mein programm mal hochladen
Ja.

bei mir ist in dem ordner .dep nicht s drinnen ist dass schlimm
Nein.

Gruß Dirk

Hatzl
01.01.2008, 14:20
ich denke dass es an der makefile liegt wie muss ich eine makefile erstellen bzw. ändern?

Hatzl
01.01.2008, 14:24
wie kann ich eine datei hochladen?

Dirk
01.01.2008, 15:36
wie muss ich eine makefile erstellen bzw. ändern?
Mit einem Texteditor, z.B. Programmer's Notepad.


wie kann ich eine datei hochladen?
Am besten hier zwischen [ / Code ] und [ Code ] einfügen.
Du kannst eine Datei auch als Anhang ("Attachment hinzufügen") dranhängen.

Gruß Dirk

Hatzl
01.01.2008, 19:40
machens wir einfacher hast du icq?

Hatzl
01.01.2008, 19:43
was muss ich bei einer Makefile alles ändern?

Hatzl
01.01.2008, 19:49
Hir ist mein proggy!

Dirk
01.01.2008, 20:26
Wie wär's denn, wenn du einfach zuerst das machst, was ich schon geraten hatte!

Nimm das makefile z.B. aus Example_01_LEDs und ändere NUR die Zeile:
TARGET = Move2
... sonst nichts!

Gruß Dirk

Hatzl
03.01.2008, 20:21
THX geht xD ! kann ich dise makefile immer hernehmen? were cool ach ja und noch was was muss man hinschreiben dass der Robby fohrwerts färt (weis ich leider nich) xD

Hatzl
04.01.2008, 19:07
und wie sind di befehle für Die Taster vorne bin noch anfänger xD

Dirk
04.01.2008, 19:34
Hallo Hatzl,

... was was muss man hinschreiben dass der Robby fohrwerts färt (weis ich leider nich)
S. 97 bis 102 in der Anleitung!

wie sind di befehle für Die Taster vorne
S. 85 bis 89 in der Anleitung!

LESEN!!! #-o

Gruß Dirk

Hatzl
05.01.2008, 15:38
den S.c.h. kapier i need des is so bleed erklärt gibts da keine kinderfreuntliche anleitung (z.b. was heist stopwatcht wass soll ich hirmit anfangen { . . . } ? )

Hatzl
05.01.2008, 15:38
den S.c.h. kapier i need des is so bleed erklärt gibts da keine kinderfreuntliche anleitung (z.b. was heist stopwatcht wass soll ich hirmit anfangen { . . . } ? )

SlyD
05.01.2008, 16:12
Hallo Hatzl,

Du musst schon das ganze Kapitel 4 lesen (bzw. in diesem Fall Kapitel 4.6.).
Es kann nicht in jedem Abschnitt alles aus den vorherigen wiederholt werden.

Dann weisst Du auch was mit "Stopwatch" gemeint ist.
(das ist eine Uhr / Timer analog zu einer echten Stoppuhr. Damit kann man den Roboter z.B. 3 Sekunden geradeaus fahren lassen und dann nach links drehen oder ähnliches. )

Schau Dir vor allem mal die Beispiele dazu an.

MfG,
SlyD

Hatzl
07.01.2008, 17:00
klappt nicht so ganz aber wie kann ich zwei zeiten machen alsoo dass er 8 sec vorwerts färt und dann 2 sec rechts ?

SlyD
07.01.2008, 22:05
Hallo Hatzl,

es ist relativ einfach möglich beliebige Bewegungsabläufe mit den "move(...)" und "rotate(...)" Funktionen zu realisieren.
Dazu gibt es schon Beispielprogramme!
Das ist allerdings für bestimmte Distanzen.


Zeitgesteuert klappt das z.B. recht einfach und universell so:




powerON(); // Wichtig: Sensoren anschalten!
startStopwatch1(); // Stopwatch1 starten!
uint8_t count = 0; // Sekundenzähler
while(true)
{
if(getStopwatch1() > 1000) // 1000ms = 1s, andere Werte sind natürlich
{ // ebenfalls möglich!
switch(count) // Sekundenzähler auswerten
{
case 1: // Sekunde 1...
moveAtSpeed(25,25);
changeDirection(FWD); // geradeaus
break;
case 4: // *Bei* Sekunde 4 schneller fahren...
moveAtSpeed(60,60);
break;
case 7: // Sekunde 7 im Bewegungsablauf...
moveAtSpeed(35,35);
changeDirection(LEFT); // links
break;
case 10: // usw.
moveAtSpeed(50,50);
changeDirection(FWD);
break;
case 12:
moveAtSpeed(0,0); // Stop!
count = 0; // wieder von vorn beginnen!
break;
}
count++; // Sekundenzähler erhöhen
setStopwatch1(0);
}
task_RP6System();
}



Lässt sich beliebig erweitern und verändern.

Hier wurde es mit "switch" gelöst, geht natürlich auch mit if-else...

MfG,
SlyD

Hatzl
11.01.2008, 16:37
das ist mir viel zu schwirig ich mache dass viel einfacher woher hast du dass so gelernt?

cb2sn43
11.01.2008, 18:07
Hallo,

ich hatte auch schon Probleme mit dem makefile als ich Windows Notepad benutzt habe zum ändern des TARGETs. Irgendwie wurde wohl ein Steuerzeichen geschrieben mit den Symtomen die weiter oben im Threat beschrieben werden.
Als ich dann das Original makefile mit den einfachen, altbekannten EDIT von Windows (ASCI Tool) den makefile geändert habe ist das Problem nicht mehr aufgetreten.

SlyD
11.01.2008, 19:25
Hallo Hatzl,



das ist mir viel zu schwirig ich mache dass viel einfacher


Nunja - dann solltest Du Dir auf jeden Fall mal ein gutes Buch über C anschauen, z.B. das hier:
http://www.galileocomputing.de/openbook/c_von_a_bis_z/

und den C Crashkurs in der RP6 Anleitung wirklich mal in ruhe durchgehen und die Sachen aus dem Kurs vor allem auch ausprobieren!

Ich geh mal davon aus das Du zwischen 12 und 15 Jahren alt bist?
Dann ist das nicht weiter schlimm wenn Du das nicht sofort verstehst.
Wie in der Anleitung schon steht - man braucht etwas Zeit dazu und das klappt nicht mal eben nebenbei an einem Wochenende.

----------------------------------------

Einfacher klappen Bewegungsabläufe aber auch mit den move und rotate Funktionen (s. Beispielprogramme...):


while(true)
{
// hin und her fahren:
move(60, FWD, DIST_MM(300), BLOCKING);
rotate(50, LEFT, 180, true);
move(60, FWD, DIST_MM(300), BLOCKING);
rotate(50, RIGHT, 180, true);
}


Aber das ist dann natürlich nicht Zeitgesteuert, sondern über Distanzen.

Man könnte - um es einfacher zu machen - allerdings eine Funktion schreiben mit der das einfacher ginge - also wäre das dann z.B. so in der art möglich:



move_timed(60, FWD, 8000, BLOCKING);
rotate_timed(50, LEFT, 2000, BLOCKING);


... ob das in der nächsten RP6Lib Version kommt - naja mal schauen ;)




woher hast du dass so gelernt?


C Buch lesen, Beispiele anschauen und dann Übung, Übung und Übung und nochvielmehr Übung. Was anderes hilft beim programmieren nicht viel. Also erstmal die Beispielprogramme durchgehen und versuchen die einfacheren abzuändern.
Dann eigene Programme schreiben.

Auch einfach mal NUR mit Textausgaben und den LEDs rumspielen - also den Roboter stehen lassen nur um mal die diversen C Befehle / Konstrukte auszuprobieren und zu sehen wie diese Funktionieren.
Danach wenn man es verstanden hat, das ganze mit Fahrbefehlen und Sensorauswertung machen...


@Peter:
Für die Makefiles solltest Du schon das Programmers Notepad 2 verwenden. Windows Notepad ist - ehm - nicht ganz so schön ;)

Als allgemeinen Text Editor kann ich PSPad empfehlen. Das kann eine ganze Menge und speichert die Datein auch im richtigen Format.
(einstellbar/automatisch, Windows/Dos, Unix/Linux ...)

MfG,
SlyD

Hatzl
19.01.2008, 15:23
wie lasse ich den rp6 rükwerts fahren?

Hatzl
19.01.2008, 15:44
habs passt schon

Hatzl
12.02.2008, 16:08
Ich möchte mich an allen die geantwortet haben mich Bedanken!