HI
Mein Asuro nimmt über den USB Adapter keine Verbindung mit dem PC auf, obwohl es schon ging. Manchmal flasht er einige Seiten, findet ihn dann aber wieder nicht und Zeigt "timeout" an.
Weis jemand woan das liegen könnte?
CU Shorty93
Druckbare Version
HI
Mein Asuro nimmt über den USB Adapter keine Verbindung mit dem PC auf, obwohl es schon ging. Manchmal flasht er einige Seiten, findet ihn dann aber wieder nicht und Zeigt "timeout" an.
Weis jemand woan das liegen könnte?
CU Shorty93
Störung durch Fremdlicht oder Akkus leer?
Ohne Lampe funktionierts. Danke
Warum stört das licht die Verbindung. (Bin Schüler und hab noch keine solche erfahrung ^^)
das IR-licht des senders ist moduliert, es geht ständig an und aus, wird eine 1 übertragen, sendet er das modulierte licht, bei einer 0 bleibt er dunkel, je nachdem ob der empfänger das mitbekommt sagt er am ausgang 0 und 1 wenn er moduliertes licht sieht oder eben nicht ... das licht deiner lampe hat auch ne gewisse frequenz (netzfrequenz drossel etc.) und das stört manchmal
Ein Glückstreffer ;)
Das war wohl eine Halogenlampe, oder? Manche Wellenlängen verwirren die IR-Empfänger.Zitat:
Ohne Lampe funktionierts
Hauptsache es hat geklappt
Ist aber ne stink normale Schreibtischlampe (Die halt genau auf den IR-Empfänger gestrahlt hat...)
Danke
naja wenn sie genau drauf leuhctet iss der empfänger aber auch schlicht BLIND, wenn cih dir mit ner taschenlampe lichtzeichen gebe und dabei die sonne im rücken habe wirst du acuh nix sehn ^^
Hab nochmal ne Frage: Wollt jetzt grad die Beispiel Programme ausprobieren, im Programmers Notepad kommt aber immer der Error: "test.c:10: error: parse error before '}' token"
#include “asuro.h”
int main(void) {
Init ()
int zaehler; // Variable für’s Zählen deklarieren
for (zaehler=0; zaehler<10; zaehler++) { // zehnmal wiederholen:
SerWrite(“Los geht’s!\n”,12); // “Los geht’s” schicken
}
MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
MotorSpeed(120,120); // Beide Motoren etwa halbe Kraft voraus
while (1) { // Danach nichts mehr machen!
} }
Der Fehler muss an scheinend beim letzten "while " sein..
Was ist da Falsch? Ist genau das Programm aus der Anleitung... *Verwirrung*
](*,) ](*,)
Kann mir jemand helfen?
Hallo
Ein Fehler in der Doku: Alle oberen Anführungszeichen müssen [SHIFT-2] sein!
GrußCode:#include "asuro.h"
int main(void)
{
Init();
int zaehler; // Variable für’s Zählen deklarieren
MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
MotorSpeed(120,120); // Beide Motoren etwa halbe Kraft voraus
for (zaehler=0; zaehler<10; zaehler++)
{ // zehnmal wiederholen:
SerWrite("Los geht’s!\n",12); // “Los geht’s” schicken
}
while (1)
{ // Danach nichts mehr machen!
}
}
mic
Danke , das programm funktioniert
wen wieder was ist meld ich mich^^
jetzt kommt schon wieder solche fehlermeldungen:
test.c:1:10: #include expects "FILENAME" or <FILENAME>
test.c: In function `main':
test.c:3: warning: implicit declaration of function `Init'
test.c:4: warning: implicit declaration of function `StatusLED'
test.c:4: error: `YELLOW' undeclared (first use in this function)
test.c:4: error: (Each undeclared identifier is reported only once
test.c:4: error: for each function it appears in.)
test.c:7:2: warning: no newline at end of file
make: *** [test.o] Error 1
> Process Exit Code: 2
Bei dem Text
#include "asuro.h"
int main(void) {
Init();
StatusLED(YELLOW);
while(1); // Endlosschleife
return 0;
}
obwohl der so genau in der anleitung steht...
kann mir jemand helfen, denn ich hab überhaupt keinen plan was daran falsch ist...
Das bedeutet: "include erwartet einen Dateinamen zwischen "" oder <>"Zitat:
test.c:1:10: #include expects "FILENAME" or <FILENAME>
Vermutlich sind hier die Anführungszeichen falsch:
#include "asuro.h"
Dadurch wird die Library nicht eingebunden und der Kompiler kennt die asuro-Funktionen wie Init(), StatusLED() oder YELLOW nicht. Die falschen Anführungszeichen haben sich in einige der Beispielprogramme in der Anleitung eingeschlichen.
Gruß
mic
es geht mit diesen Anführungszeichen immer noch nicht....
liegt das vielleicht an dem make tool?
Welches Windows OS brauchst du, und wie startest du das make tool? Wo hast du die den Asuro dateien gespeichert? Hast du anderungen gemacht an den makefile datei?
Ich starte das make tool über das tools Menu im Programmers Notepad. DIe Asuro Datei (C-Datei) hab ich im selben ordner wie das makefile und hab das make file aus der anleitungunverändert.
was meinst du mit windows OS?
OS = operating system. Hast du einer Windows XP version, oder das neue Vista oder einer andere altere version. Zbs. Vista ist manchmal sehr ergerlich wenn man programmen im Program Files order installiert hat. Und du in einer normalen nutzer account diesen dateine andern möchte. Oder mit hilfe einer tool wie make. Deshalb ist es wichtig du erzählst genau wie alles installiert ist, und auf welchem OS.
habs ganz normal installiert und hab XP home..
Jetzt klappts, ich glaub es war ein Schreibfehler...Ich hab ein Leerzeichen ausgelassen...
Wie kannn man in c eig Zeitbegrenzungen einbauen?
BSP: DerAsuro soll vorwärts fahren und wenn er irgendwo anstößt für 3 sec sich rückwärts drehen.
Wie geht das?
Srry,dass ich immer so Fragen stell, aber ich hab wirklich noch gar keine Erfahrung in dem Gebiet^^
Such mal in dem anleitung oder hier im forum nach "Sleep"
ja des kenn ich , aber ich versteh nicht wie man des einsetzt
Ok, weisst du wie man das anstossen erkennst? Mit Pollswitch. Da sind auch genug thread uber geschrieben im forum. Beispiele genug hinter den such funktion.
Yep Danke..
Hab aber schon wieder ein neues Problem...^^*
immer wenn ich ein neues programm auf den asuro flash spielt er alte programme ab...
Weiss jemand was da falsch ist?
Ist den hex datei uberhaupt geandert? Kuck mal nach dem daten im datei ubersicht im Explore (oder wie auch das im deutsch ubersetzt is durch Microsoft) Wenn das nicht stimmt hast du einer make problem.
Beim Notepad: Speichern vergessen vor dem Kompilieren.
Ich hab schon ne neue hex datei erstellt und vorher gespeichert, aber wenn ich den asuro an schalte macht er jedesmal was anderes.
Eig soll er fahren und wenn er irgendwo anstöß sich umdrehen, manchmal macht er das auch, aber nicht immer. Manchmal, soblad er anstößt, ruckelt er vor und zurück und die SatusLED blinkt gelb, machmal stürzt er dann auch komplett ab und ein anderes mal kommt ein programm, das ich früher auf ihn geflasht hab.
woran könnte das liegen?
Gruß
batterien zu schwach? was im programm falsch gemacht? hab ehrlich gesagt grad nicht auf seite 1 geschaut aber vielleicht könntest uns das programm posten
Möglicherweise wird die main()-Schleife verlassen. Das könnte dazu führen dass der asuro alte Programmteile ausführt die noch im Speicher schlummern. Flashen überschreibt nur die geflashten Blöcke.
Hi hier ist mal ein programm,
da leuchtet jetzt z.B. noch die BackLEDs mit obwohls ja eig nit im programm steht...
#include <asuro.h>
int main(void) {
while (1) {
StatusLED(GREEN);
}
while (1)
return 0;
}
wo ist der Fehler?
THX
Irgendwie hast du ein gutes Händchen für Standartfehler: Init() vergessen:
Du solltest für Programme auch die Code-Tags verwenden.Code:int main(void) {
Init();
while (1) {
btw ist das auch riskant:
while (1)
return 0;
Ohne ; nach while(1) würde der asuro endlos returnen wenn das Programm hier ankommen würde ->asuro im Nirwana!
Gruß
mic
oh danke..^^
was meinst du mit btw?
btw bedeutet nebenbei bemerkt (by the way) und bezog sich auf das fehlende Seikolon das zu einem Absturz führen würde wenn es sich um die finale while()-Schleife handeln sollte. Die Funktion main() darf nie verlassen werden! Das würde aber geschehen wenn das while(1) ohne ; ausgeführt werden würde.
srry aber irendwie versteh ich das jetzt nicht..
Shorty93:
Deine code
while (1)
return 0;
meint etwas wie: "fur immer blasse deine letzte atem aus". Aber das ist unmöglich.
Das sollte sein:
while(1);
return 0;
Weil das ist gleich wie: "tu immer nichts, aber danach blasse deine letzte atem aus". Das hört kommisch an, aber stimmt doch fur Asuro. Weil er immer in der while schleife bleidt, und deshalb immortal (ist das auch einer deutscher wort??) ist. Dammit endet main() nie.
Wenn den cpu doch bei "return 0" angekommen ist geht er einfach weiter weil Main das hauptprogram ist. Normale funktionen geben hier ein wert zuruck zum hauptprogram, oder zu einem funktion der sie angerufen hat. Und den cpu geht weiter in dem code der ihn angerufen had. Aber das kann nicht mit Main, weil es ein Uber-uber-uber-(Gott)-funktion is. Den instruktionszahler geht einfach weiter und arbeitet den 'instruktion' im nachsten programspeicherplatz. Deshalb hast du gesehen deine Asuro spielt alte programmen ab. Den sind noch drin und nicht uberschrieben beim flaschen. Wenn du ein grosses program geflashet hattet wurde er danach in verbotenes code gehen (wie den bootloader der am ende sitzt, wen ich mich nicht irre) oder den instruktionszahler geht durch den maximum wert und startet wieder am anfang bei 0. Aber das ist auch nicht erlaubt. Deshalb muss er immer den selbe gedanke machen.
Ich hoffe diesen analogie hat das ein bisschen erklärt.
hmm, ich habe gerade einer post von radbruch gesehen. Aber das ist nun verschwunden. :?:
jetzt hab ichs einiger maßen verstandenn DANKE!
Nächstes Problem kommt bestimmt...^^*
Ich hab keine Nachricht von Radbruch nach deiner gesehn..
Ich hatte auch was zum Verlassen von main() mit return(0) geschrieben. Da Valen dies in seinem (editierten ;) Beitrag schon erwähnt und ich deshalb zu langsam war habe ich meinen Beitrag wieder zurückgezogen :)
achso.. trotzdem danke für die antwort :)
Ach so, hatte ich mir auch gedacht. Aber vielleicht hatte den forum server sich auch verschluckt oder so. Ja leider brauche ich manchmal so einer halbe stunde mit editieren meiner post. Warum ich das nicht gleich bemerken kannst ist mir ein rädsel. :oops:Zitat:
Zitat von radbruch
Hi ab schon wieder ein neues problem..
der asuro soll gerade aus fahren, wenn er anstoößt rückfahrn und sih drehen, danach soll er wieder vorwaärtsfahren und so weiter..
Hier ist mein Programm:
while (1) {
if(PollSwitch()>0) {
StatusLED(RED);
BackLED(ON,ON);
MotorDir(RWD,RWD);
for(i=0; i<1000; i++) Sleep(144);
MotorSpeed(100,150);
for(i=0; i<1000; i++) Sleep(144);
}
else { StatusLED(GREEN);
BackLED(OFF,OFF);
MotorDir(FWD,FWD);
MotorSpeed(150,150);
}
}
while (1);
return 0;
}
Irgendwie funktioniert das so nicht..( er fährt nur rückwärts und fährt ne kurve..) kkann mir jemand die sleep funktin erklären und mir einen tipp geben was an meinem programm falsch ist?
Danke schonmal
Gruß
shorty
Das ist nicht das kompleten program! [-X
Er denkt er erfuhrt ein anstoss. Aber das sind den störungen von den motoren. Du muss mehrfach Pollswitch nacheinander benutzen und den werten vergleichen ob sie stabiel sind.