Kickstart.
Alter Trick: immer mit reichlich Gas losfahren, danach runterregeln (wenn die Motoren wirklich laufen, weiss man ja von der Odometrie).
Mach ich z.B. bei manchen Settings mit dem 3D-Drucker auch: der Bauteil-Lüfter läuft bei 5% nich an, aber wenn man ihn mit 25% startet, kann man ihn problemlos auf die gewünschten 5% runterregeln.
Was die Timing-Probleme mit den Sensoren angeht: nachdenken.
Wozu muss ein hinterer Sensor abgefragt werden, wenn ich vorwärts fahre?
Bieg ich links ab, ist der rechte Sensor auch nicht so sehr nützlich...
Ich mach alles in Zeitscheiben: es läuft ein simpler Timer (nach dem Beispielprogramm BlinkWithoutDelay), der mir, beispielsweise, jede Sekunde einen Tick gibt. Diese Ticks werden gezählt, so lange, wie ich halt Aufgaben zu vergeben habe, und bei jeder Tick-Zahl wird eine Aufgabe erledigt.
Danach wird der Tick-Zähler zurückgesetzt, und der ganze Zyklus geht von vorne los.
Auf diese Weise schafft so ein kleiner Arduino erstaunlich viel.....es ist z.B. vollkommen unnötig, den Akku alle paar Millisekunden abzufragen, im XPlorer mache ich das nur alle 20 Sekunden, das genügt völlig, und ich hab 19 Sekunden, auf die ich andere Aufgaben verteilen kann.
Diesen Timer kann man beliebig langsam (oder schnell, der könnte auch Zehntelsekunden oder hundertstel) ticken lassen, so kann man z.B. auch sicherstellen, dass US-Sensoren sich nie gegenseitig in die Quere kommen (Echos abklingen lassen) usw.
Unglaublich einfach und unglaublich flexibel.
Da steht natürlich in Wirklichkeit noch bisschen Kleinkram drin (man sollte sicherstellen, dass der Arduino beim "Lies Akkustand-Tick" nicht 152x den Akku ausliest, usw. aber das Prinzip ist ganz einfach.
Natürlich: diese Schaltuhr ist nicht sonderlich präzise, aber die meisten Aufgaben müssen ja gar nicht auf die Millisekunde pünktlich erledigt werden.
Und: Geschichten wie die Odo-Zähler kann man damit nich handlen, dafür gibts Interrupts.
Es spricht auch nix dagegen, jeden US-Sensor nur zweimal pro Sekunde zu nutzen, so schnell wird die Rübe nicht.
Bisschen Reichweite haben die ja schon.
Und wenn du dann auch nur die einsetzt, die gerade sinnvoll sind, dann brauchen die gar nicht viel Zeit.
Das Timeout (und damit auch die Reichweite der Dinger) kann man auch noch so justieren, dass die Messung beispielsweise schon nach nem Meter beendet wird.
Das spart auch bisschen Zeit.
Lesezeichen