ir[0] == 'y'
Überlege mal selbst was der Unterschied ist.
Druckbare Version
ir[0] == 'y'
Überlege mal selbst was der Unterschied ist.
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!
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
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 Hut :) Werde 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 gemacht :) Resultat: Beide Achsen der rechten Seite waren ab (hab sie ja nur geklebt).
Aus Fehlern lernt man.
gibt es eigentlich eine möglichkeit asuro graphisch zu programmieren??