wenn ein schalter gedrückt wird fährt er ganz kurz rückwärts und im nächsten durch gang wieder vorwärts.
du musst noch eine pause einbauen.
mfg liggi
ok, danke^^ hat alles so weit funktioniert!!!
nun wollte ich ein programm schreiben, durch das der asuro so weit gerade aus fährt, bis er wo anstöst und ab da nur noch rückwärts, hat aber nicht so ganz geklappt :
grußCode:#include "asuro.h" int main(void) { Init(); StatusLED(1); MotorDir(FWD,FWD); MotorSpeed(120,120); while(1) if (PollSwitch() != 0) { while(1) {MotorDir(RWD,RWD); MotorSpeed(120,120);} } else {MotorDir(FWD,FWD); MotorSpeed(120,120);} return 0; }
wenn ein schalter gedrückt wird fährt er ganz kurz rückwärts und im nächsten durch gang wieder vorwärts.
du musst noch eine pause einbauen.
mfg liggi
Lieber am Asuro rumschrauben als alles andere.
Meine Homepage
So in etwa sollte es funktionieren(nicht getestet!)
Beim C Programmieren happerts noch ein bisschen bei dir, schau dir z.B. diesen Online C Kurs an:Code:int flag=0; while(1) { if(PollSwitch() != 0) flag=1; if (flag==0) { MotorDir(FWD,FWD); MotorSpeed(120,120); } else { MotorDir(RWD,RWD); MotorSpeed(120,120); } }
http://www.fh-augsburg.de/informatik...utorial/cyris/
Grüße,
Harri
naja, mit deinem code fährt er nur rückwärts.. das kann es auch nicht sein, weis sonst einer weiter??Zitat von harry3
Mach dir mal über den Code Gedanken bevor du ihn als falsch abstempelst!
Ich tippe mal drauf dass du die PollSwitch Funktion noch nicht richtig eingestellt hast! Dazu gibts im Forum schon mehr als wie genug Tipps(PollSwitch mehrfach hintereinander aufrufen).
Grüße,
Harri
ok, hab das mit dem PollSwitch() inzwischen recht gut im griff*freu*
und das problem, das mein asuro rürckwärts lief war, ich hab die motoren falschrumgepohlt eingelötet![]()
nunja. das mit dem PollSwitch() klapt ja ohne probleme, wenn ich es mehrmals aufrufe, aber verstanden, warum dies so gehandhabt werden muss hab ich nicht, bzw, nirgends eine erklährung dazugefunden, kann man mir ma l wieder weiterhelfen \/ \
/
thx im vorraus gruß
PollSwitch liefert manchmal einen falschen Wert(da Asuro keine Spannungsstabilisierung hat können z.B. durch die Motoren die genannten Störungen auftreten). Dies tritt aber in der Regel nur kurz auf. Ruft man PollSwitch nun 2mal hintereinander auf, und beide Male wird der gleiche Wert zurückgeliefert, kann man davon ausgehen dass wirklich derjenige Taster gedrückt wurde.
Sind die beiden Rückgabewerte nicht gleich, so kann man davon ausgehen dass sich da ein Fehler eingeschlichen hat.
Grüße,
Harri
ich habe auch das Problem, das mein Asuro ohne das ein Taster gedrückt wurde, nach ein paar sek einfach rückwärts fährt...
wo kann ich die Taster einstellen?
Oder wie muss ich das Prog schreiben um das zwei mal hintereinander ab zu fragen und zu vergleiche, wie du es beschrieben hast?
EDIT: er fährt auch leicht nach links, wie kann ich das verbessern? muss ich beim Programmieren, wenn ich geradeaus fahren will das eine rad ein bischen weniger laufen lasse z.B. anstatt 120 dann nur noch 110...?
Eine Möglichkeit besteht darin dass du vor die main Funktion folgende Funktion hinkopierst:
Im main Programm kannst du von nun an statt PollSwitch die Funktion fkt_taster aufrufen, welche besser funktionieren sollte. Funktioniert auch das nicht, dann meld dich, dann muss man in der Funktion PollSwitch einen Wert korrigieren.Code:unsigned char fkt_taster(void) { unsigned char taster=0; taster=PollSwitch(); if(taster==PollSwitch() && taster!=0) return taster; else return 0; }
Dass Asuro nicht gerade fährt ist normal. Entweder man spielt sich solange mit den Werten der linken und rechten Geschwindigkeit, bis Asuro geradeausfährt.
Oder, und das ist natürlich die bessere Methode, man programmiert einen Regler der Asuro geradeausfahren lässt. Das lässt sich mit der Odometrie recht gut lösen, such mal im Forum, da gibts schon genug Themen dazu!
Grüße,
Harri
ja, das gleiche problem habe ich auch, und durch die geschwindigkeits einstellung im code klapt es wunderbar!!!!Zitat von ASURO-ASURO
theoretisch könntest du ein geschwindigkeitsabgleich in der header vornehmen, dan müsstes du nicht jedesmal darauf achten
korrigiert mich wenn ich falschliege
gruß
Lesezeichen