Hallo,
PollSwitch() arbeitet nicht sehr zuverlässig, versuche es mal so:
...
if ((PollSwitch==0) && (PollSwitch==0))
...
Bei meinem asuro klappts so ab 3 Abfragen ohne Störungen.
gruß
mic
Hallo,
ich habe gestern meinen Asuro bekommen und auch gleich zusammengebaut. Trotz einiger kleiner Hinternisse (Widerstände haben wurden falsch geliefert aber is ja nicht schlimm) läuft er jetzt soweit.
Ich hab mich auch gleich ans programmieren gemacht und nachdem ich auch schon einige Erfahrung in C durch das Studium gesammelt habe geht das auch recht angenehm von der hand.
Nun hab ich aber trotzdem mal ein kleines Problem.
Aber zuerst mal das Programm:
So nun möchte ich das die Lampen beim fahren aus sind. Wenn er ein Hinternis berührt soll er anhalten und die LEDs sollen angehen.Code:... int main(void) { init(); while(1) { if(PollSwitch==0) { MotorDir(FWD,FWD); MotorSpeed(100,100); FrontLED(OFF); BackLED(OFF,OFF); StatusLED(GREEN); } else { BackLED(ON,ON); StatusLED(RED); FrontLED(ON); MotorDir(BREAK,BREAK); } FrontLED(OFF); } return 0; ...
Mein Problem ist hier, dass die LEDs während der Fahrt ab und zu flackern.
Ist dies zurückzuführen auf den Zusammenbau (Anfänger ), auf den Quellcode oder ist dass normal?
Könnte der Einsatz von Prototypen den Fehler beheben?
Beim Selftest klappt sweit alles.
mfg TOYO (neuster Asuro-süchtiger)
Es könnte aber auch am IF-Befehl liegen. Ich Probier mal ne while-Schleife.
Nein dat wars auch nicht. Für Hilfe wäre ich dankbar.
Hallo,
PollSwitch() arbeitet nicht sehr zuverlässig, versuche es mal so:
...
if ((PollSwitch==0) && (PollSwitch==0))
...
Bei meinem asuro klappts so ab 3 Abfragen ohne Störungen.
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!
Okay danke für den Tipp Radbruch,
ich werds gleich ausprobieren. Hängt das damit zusammen dass ich eine Abfrage für die Kollisionstaster mache oder hat das nen anderen Grund.
mfg TOYO
PS: Der Käfer-Asuro is ja mal schwer geil
Also ich habs mal ausprobiert,
Bei mir klappts so:
Kann mir jemand sagen woran das liegt?Code:... if((PollSwitch>0) && (PollSwitch>0) && (PollSwitch>0)) ...
mfg TOYO
Das liegt in erster Linie an den Bauteiletoleranzen (trotz der 1%er). Zusätzlich stört noch der "Dreck" der laufenden Motoren die Auswertung der Taster.
Etwas Feintuning kann man in der asuro.c betreiben. In der Funktion PollSwitch() wird dort am Ende der Wert so umgeformt das jeder Taster einem Bit im Rückgabewert entspricht. Meist hilft es den 60er-Wert in der Rechnung zu ändern. Die Tasten sollten die Werte 1,2,4,8,16 und 32 liefern. Dann kann man auch mehrere Taster gleichzeitig abfragen, PollSwitch() liefert dann immer die Summe aller gedrückter Taster. So ergibt z.B. der linke und der rechte Taster 33, drei seitliche 7 bzw. 56. Alle zusammen ergeben 63.
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!
da die widerstände nicht 100%ig genau sind, passiert sowas, solche probleme hat der asuro nunmal. er fährt auch nicht geradeaus, und die odometrie mach gelegentlich mucken. aber genau das ist die herausforderung =)
zu deinem programm: die funktion Init(); muss groß geschrieben werden!
Das flackern würde ich auf kleinere störungen zurückführen, mach dir keine sorgen drum... =)
Danke erstmal für die tollen Antworten,
also ich muss sagen, dass mein Asuro sehr wohl geradeaus fährt. Hat allerdings auch lange gedauert. Bei mir hing der Faktor geradeausfahren maßgeblich vom "anpressdruck" (sofern man davon reden kann) der Räder auf die Platine ab.
Wenn ich schonmal hier bin wollte ich auch noch fragen ob jemand schon erfahrung damit gemacht hat ein eigenes Programm in C zu schreiben, mit dem Daten vom Asuro empfanen bzw. gesendet werden können und ob jemand ne gute Quelle hat. Ich hab zwar schon einige Quellen über google.de und c-plusplus.de gefunden wäre aber trotzdem dankbar wenn mir jemand ne gute Quelle posten könnte.
danke schonmal im voraus
mfg TOYO
wieso benutzt du nicht einfach die anleitung als quelle? da steht ganz genau was man tun muss um daten zu senden und zu empfangen...
Hallo Damaltor,
ich glaub ich hab mich da etwas unverständlich ausgedrückt, sorry. Wenn ich Daten an den Asuro senden möchte, mache ich das über das Hyperterminal. Allerdings möchte ich alternativ zum Hyperterminal ein Programm schreiben mit dem ich den Datenaustausch steuern bzw. verarbeiten kann um zum beispiel Odometrie-daten besser auswerten zu können.
Jetzt bräuchte ich eine gute Seite, die die Ansteuerung der seriellen Schnittstelle anhand von C beschreibt, vorzugsweise Konsole.
mfg TOYO
hmm das klingt nicht ganz so einfach. du könntest dich evtl mal mit Osser (aus dem forum) in verbindung setzen, der hat bereits ein alternatives terminal und flash-programm geschrieben, vielleicht kann der dir helfen.
Lesezeichen