ir[0] == 'y'
Überlege mal selbst was der Unterschied ist.
ir[0] == 'y'
Überlege mal selbst was der Unterschied ist.
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Ich hab mich jetzt mal an dem Beispiel versucht, allerdings mit einer switch statt zig ifs. als default (also wenn KEIN richtiges Zeichen ankommt) hab ich break,break gewählt, der Asuro soll also stehen bleiben.
Ebenfalls setze ich am Ende eines jeden Durchlaufes die Variable auf einen fiktiven Wert.
Und zu guter Letzt soll SerRead nur 5 Takte lang versuchen einen Wert zu empfangen.
Resultat: Das Programm funktioniert nicht. Und zwar tut sich gar nichts.
Wenn ich bei SerRead den Wert wieder auf 0 (also Endlos) setze fährt der Asuro zwar, bleibt aber nicht stehen wenn die Taste losgelassen wird, was auch logisch ist.
Jemand ne Ahnung wo der Fehler liegt?
Hier mein Code:
DankeCode:#include "asuro.h" void stopGo(void); //prototyp int main(void) { Init(); MotorSpeed(200,200); unsigned char dir[] = "123"; //platz für die empf var while(1) { SerRead(dir, 1, 5); switch(dir[0]) { case 'w': MotorDir(FWD,FWD); break; case 's': MotorDir(RWD,RWD); break; case 'a': MotorDir(BREAK,FWD); break; case 'd': MotorDir(FWD,BREAK); break; case 'm': stopGo(); break; case 'q': MotorDir(RWD,FWD); break; case 'r': MotorDir(FWD,RWD); break; default: MotorDir(BREAK,BREAK); break; } dir[0] = '0'; } return 0; } void stopGo(void) { static unsigned char x = '0'; if(x == '0') { MotorSpeed(0,0); x = '1'; } else { MotorSpeed(200,200); x = '0'; } }
ok die fernsteuerung funktioniert....
jetzt hab ich aber ein problem beim flashen...:
wenn asuro mit dem flashen fertig ist leuchtet die status led rot auf....(sie sollte doch eigentlich grün aufleuten...) und die backleds leuchten auch....
wenn ich dann das selbe programm nochmal flashe dann leuchtet die status led grün....
aber asuro flash sagt das das programm erfolgreich gflasht wurde...
was stimt mit meinem asuro nicht???
Guten Abend,
ich wollte den Thread nochmal hochholen, in der Hoffnung das sich jemand mein Programm am Ende von Seite 1 ansehen und mir den Fehler nennen kann?
Bitte, warum bleibt mein Asuro nicht stehen?
Vielen Dank!
while (!asleep()) sheep++;
RP6 und Asuro Befehlsübersicht
Hallo
Wenn SerRead() mit timeout kein Zeichen innerhalb der Timeauszeit empfängt wird ein großes 'T' zurückgegeben. Das könntest du ja prüfen und darauf reagieren.
(aus SerRead() in asuro.c)Code:if (time > timeout) data[0] = 'T';
Dir ist schon klar das du deinem asuro bei Vollgas den Rückwärtsgang reinhaust? Das ist nach "Suche die Tischkante und bleibe dann stehen" und "Kollisionstaster: Mit Vollgas gegen die Wand" eine weitere sichere Methode den Kleinen kaputt zu kriegen.
Gruß
mic
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
Hallo,
und Danke, das werde ich probieren!
Danke auch für den Tipp mit dem Motor!
Wie bei meiner Vorstellung gesagt, ich hab zwar Löten und Programmieren gelernt, aber mit Motoren und anderen mechanischen Bauteilen hatte ich wenig am HutWerde es mir zu Herzen nehmen und die armen Motoren nicht so quälen.
PS: So einen typischen "Suche die Tischkante und bleibe dann stehen" Fehler habe ich schon gemachtResultat: Beide Achsen der rechten Seite waren ab (hab sie ja nur geklebt).
Aus Fehlern lernt man.
while (!asleep()) sheep++;
RP6 und Asuro Befehlsübersicht
gibt es eigentlich eine möglichkeit asuro graphisch zu programmieren??
while (!asleep()) sheep++;
RP6 und Asuro Befehlsübersicht
Lesezeichen