-
hex-files sind kompiliert. den original-c-programmcode bekommst du daraus nicht wieder zurück. hex-dateien sind dazu da, um auf den asuro geflasht zu werden, und für nichts anderes. mit einem disassembler kann man sie in assemblercode zurückführen, aber das hilft dir leider nichts.
eine hex-datei im PN zu öffnen ist also quatsch... warum sollte man dann erst die getippten dateien zu hex umwandeln...
PN (test.c): quellcode
HEX (test.hex) kompiliertes programm in prozessorverständlicher sprache
die verschiedenen größen könnten an verschiedenen versionen der library liegen.
fotomarco: wenn dein asuro den selbsttest bestanden hat und zwar komplet fehlerfrei, wie du glaube ich mal geschrieben hast, dann liegt das wohl an deinem programmcode.
der code btton mit der box ist über dem texteingabefeld wo du deinen post eingibst.
alternativ kannst du auch deinen programmcode im post mit [code ] und [/code ] einrahmen, wobei du das leerzeichen vor der klammer weglassen musst.
-
danke dalmator ich dachte der selbstest war ok ,da er sich rechts und links drehte aber ,er war nicht ok jezt faehrt er gradeaus ich hatte ihn verpolt
-
sehr gut =) na dann ist ja alles klar
-
Hallo also ich habe es jetzt hingekriget das er bei einem Programm fährt aber nur Rückwärts obwohl ich Vorwärts Programmiert habe woran kann das liegen?
Hier ist nochmal das Programm:
Code:
#include "asuro.h"
int main(void){
Init();
MotorDir(FWD,FWD);
MotorSpeed(120,120);
StatusLED(GREEN);
while (PollSwitch()==0){
SerWrite("Alles OK!\r\n",11);
}
MotorSpeed(0,0);
StatusLED(RED);
while (1){
SerWrite("Aua!\r\n",6);
}
}
-
das ist einer der bekanntesten fehler des asuro... such mal nach "motor"und "richtung". du musst die beiden kabel an den beiden motoren vertauschen. leider st das bei vielen neuen asuros der fall.
-
Also meinst du das Kabel auf MR- auf MR+ und bei Ml genauso?
-
ja genau. aber es ist DEUTLICH einfacher die kabel an den motoren zu tauschen, als auf der platine.
-
Jo das habe ich gemacht und jetzt FUnktioniert es.
Mittlerweile habe ich mein erstes Selbst geschrieben Programm erstellt und würde euch bitten mal rüber zu schauen weil es klappt nicht so ganz wie es soll! Vielen Dank im Vorraus!+
Code:
#include "asuro.h"
int main(void){
Init();
MotorDir(FWD,FWD); //Beide Motoren auf Vorwärts
MotoSpeed(200,200); //Bei Motoren mit ca dreivirtel Kraft vorraus
StatusLED(GREEN); //Status LED auf grün schalten
if (PollSwitch()>0); //wenn ein taster gedrückt wird
MotorSpeed(0,0); // Anhalten
StatusLED (RED); // Status LED auf Rot schlaten
MotorDir(RWD,BREAK); // Der Linke Motor auf rückwärts und der Rechte soll stehen bleiben
MotorSpeed(120,0); //Geschwindigkeit der Motoren
else {StatusLED(GREEN);} // Sonst Status LED auf grün schalten
MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
MotorSpeed(200,200); // Motoren mit dreivirtel Karft vorraus
while (1); // Endlosschleife
return 0; // Ende
}
}
wahrscheinlich habe ich da eine Sache doppeltgemoppelt :-/
Vielen Dank
Felix
-
hrhr... lies mal in der anleitung wie ein "if" auszusehen hat... du brauchst geschweifte klammern {}. dann sollte das gehen.
-
Um nochmal auf das selbstgeschriebene Programm von mir zurück zu kommen: Ich habe das Programm jetzt korrigiert aber er fährt so wie es jetzt ist gleich rückwärts obwohl der ASURO erst vorwärts fahren soll! Vielleicht könnt ihr mir dabei helfen. Hier ist das umgeschriebene Programm:
Code:
#include "asuro.h"
int main(void){
unsigned int i;
Init();
MotorDir(FWD,FWD); //Beide Motoren auf Vorwärts
MotorSpeed(200,200); //Bei Motoren mit ca dreivirtel Kraft vorraus
StatusLED(GREEN); //Status LED auf grün schalten
while(1){
if (PollSwitch()>0) //wenn ein taster gedrückt wird
{MotorSpeed(0,0); // Anhalten
for (i = 0; i < 847; i++){ //3 Sekunden warten
Sleep(255);}
StatusLED (RED); // Status LED auf Rot schlaten
MotorDir(RWD,BREAK); // Der Linke Motor auf rückwärts und der Rechte soll stehen bleiben
MotorSpeed(120,0); //Geschwindigkeit der Motoren
for (i = 0; i < 847; i++) // 3 Sekunden rückwärts fahren
Sleep(255);}
else
{StatusLED(GREEN); // Sonst Status LED auf grün schalten
MotorDir(FWD,FWD);
MotorSpeed(200,200);} // Motoren mit dreivirtel Karft vorraus
}
while (1); // Endlosschleife
return 0; // Ende
}
Hallo ich habe vor kurzem das Buch gekauft:"Mehr spaß mit ASURO Band 1
Und habe da mal ein paar Programmierungsaufgaben versucht zu lösen nur bei der einen komme ich nicht weiter:
Stopp am Abgrund Asuro soll mit maximaler Geschwindigtkeit vorwärtsfahren und anhalten wenn er auf ein schwarzes Papier trifft: Ich aheb dazu versucht das Prograqmm zu schreiben ist mir so halbwegs gelungen und habe mir die Lösung zu Rate gezogen und habe diese übernommen aber er zeigt mir einen Fehler an.
Hier ist das Programm:
Code:
#include "asuro.h"
#define STOP 200
int main(void)
{
unsigned int lineData[2];
unsigned char running = TRUE;
Init();
MotorDir(FWD,FWD);
MotorSpeed(255,255);
do {
LineData(lineData);
if ((lineData[0] < STOP) && (lineData[1] < STOP)) {
MotorSpeed(0,0);
BackLED(ON,ON);
15 running = false;
}
}
while (running);
while(1);
return 0;
}
zu Zeile 15 zeigt er diese Fehlermeldung an:
Code:
avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
test.c: In function `main':
test.c:15: error: `true' undeclared (first use in this function)
test.c:15: error: (Each undeclared identifier is reported only once
test.c:15: error: for each function it appears in.)
make: *** [test.o] Error 1
> Process Exit Code: 2
vielleicht könnt ihr mir helfen woran der Fehler liegen könnte ich verstehe auch noch nicht so richtig was das heißt mir True und False (wahr und falsch) trotz lesen der Anleitung!
Vielleicht könnt ihr mir helfen
Vielen Dank im Vorraus
Felix