Wenn man ungefähr weiss, was kommt (oder nich kommen kann), kann man PulseIn bedeutend beschleunigen, indem man ein knappes Timeout setzt.
Das Problem ist, wenn nix kommt, wartet der Arduino bis zum "eingebauten" Timeout- ich glaub, ne volle Sekunde. In der wartet er wirklich nur, das ist also genauso böse wie delay()...
Da klappt dann halt nix anderes mehr.
Zusätzlich kann man Servos oft entkoppeln (myServo.detach()), grad bei Servos, die nur nen Sensor schwenken oder so geht das ohne weiteres, die bleiben dann einfach in der letzten Stellung stehn. Fahrtregler allerdings könnten dann ins failsave fallen, in der ersten Version des Monsters hatte ich das genutzt, um den Antrieb per Software zu entkoppeln: Lenkung geradeaus stellen, Fahrtregler auf stop, und dann beide abschalten.
Wenn das Monster dann seine aktuelle Aufgabe kannte, wurden beide mittels myServo.attach() wieder zugeschalten, und die Fahrt konnte losgehen. So kann man z.B. in Ruhe erst mal irgendwelche Parameter übergeben, oder die Betriebsart auswählen, ohne um die Finger fürchten zu müssen.
Das baue ich ganz sicher auch wieder ein, wobei es mir noch besser gefiele, wenn ich das BEC (was ja Lenkservo und Regler versorgt) direkt per Programmierung abschalten könnte. Nen Relais in das BEC-Schalterkabel wäre ne Möglichkeit, aber mit nem Transistor müsste das doch eleganter (und vor allem: weniger anfällig) gehn?
Lesezeichen