Hm-ich verstehe die Frage nicht (bzw. finde keine)- aber einige Bemerkungen hätt ich schon.
Zuerst: natürlich kann man auch
Servos sehr smooth und langsam laufen lassen, per Mikrocontroller.
Das ist einfach nur ne Frage der Programmierung, grob ungefähr so: möglichst kleine Schritte in (für Mikrocontroller, wir reden hier von Millisekunden) in grösseren Zeitabständen ausführen.
Zweitens: wieso nicht mit zwei Potis vier Türme einzeln ansteuern?
Ich hab im Seeteufel (vor Jahren gebaut) mit einem Schalter vier Funktionen (alles Servos, aber die konnten wahlweise vor und zurück) problemlos umgesetzt.
Der Trick ist: du liest die ganze RC-Geschichte in den Controller ein (gibts praktische Lib's für).
Der Controller dröselt alles logisch auf:
-willst du Turm A steuern, dann gibst du vorher (beispielsweise) einen sehr kurzen Fahrimpuls nach vorne.
Da der zu kurz ist um das Schiff zu bewegen, kann der Controller den Unterschied leicht erkennen, und schaltet Turm A frei.
Nun drehst du am Poti....das Gleiche kannst du mit allen anderen Türmen machen, somit reicht schon _ein_ Poti aus.
Welches Steuerelement du nun als "Shift-Taste" benutzt, musst du selber wissen- irgendwas, was man am Schiff nicht sieht.
In meinem Beispiel (kurzer Fahrimpuls) könntest du den Controller so programmieren, dass Fahrsignale erst dann als Fahrsignale interpretiert werden, wenn sie länger als eine Sekunde dauern- das merkt niemand, und du hast allemal genug Zeit, um die Türme anzuwählen.
Oder: du hast zwei Potis.
Einen nimmst du als Vorwahl (Stellungen 12,3,6,9 Uhr, ungefähr reicht ja), den anderen zum drehen- ganz einfach...
Ich benutze für sowas gerne diese Bibliothek:
https://wkla.no-ip.biz/ArduinoWiki/d...ekte:rcreciver
Die hat, gegenüber manch anderer, den Vorteil, dass sie non-blocking ist.
Die übliche Vorgehensweise (die manche anderen nutzen, und die _diese_ auch kann) ist, per PulseIn zu lauschen, was reinkommt.
Dadurch wird aber der Controller die meiste Zeit blockiert....die Interrupt-Methode (alles da beschrieben) tut das nicht!
Was du zuerst lernen musst (zwingend nötig, wenn du Motoren _irgendwelcher_ Art smooth ansteuern willst): nicht-blockierenden Code zu schreiben.
Sämtliche delay(); in den Schleifen sind verboten, bzw. sollten, wenn überhaupt, nur dort eingesetzt werden, wo der Controller wirklich _nichts_ zu tun hat (beispielsweise ist er mit Servoimpulsen grundsätzlich eigentlich ununterbrochen beschäftigt).
Dazu hat die Arduino-IDE ein Beispielprogramm namens blink without delay.
Das _muss_ sitzen.
Wenn du das Beispiel verstanden hast, kannst du ganz problemlos mehrere Vorgänge in unterschiedlichen Zyklen simultan ablaufen lassen, ohne den Controller dabei mit delay's zu blockieren (man kann das problemlos verschachteln).
Dann dazu die genannte Bibliothek, und du kommst zurecht-alles andere ist lediglich ein logisches Aufdröseln der gewünschten Funktionen.
Wenn du eh nen Mega hast, kannst du das furchtbar weit treiben: in meinem Seeteufel kümmert der sich nebenbei noch komplett eigenständig um die Beleuchtung (und das Ding hat, da es ein Schlepper ist, nen ganzen Christbaum am Mast, und kann auch, je nach Einsatz, die entsprechenden Lichter zeigen, ohne mein Zutun), überwacht den Akku, den Rumpf auf Wassereinbrüche, und stellt gleich noch ein Fail-save.
Und da ist noch ne Menge Luft....
Zur Ansteuerung deiner
Schrittmotoren kann ich allerdings _gar nicht_ helfen- ich würds mit
Servos machen, aber nur, weil ich damit genug Erfahrung habe.
Lesezeichen