Bodo, du kannst ohne weiteres die 12 Kanäle mit _einem_ Nano schalten. Auch 64, wenn du willst.
Dazu nimmt man einfach ein Schieberegister (auch: Portexpander), dann brauchst du drei Pins, hast aber schonmal acht Ausgänge daraus gemacht. Das wirklich tolle ist: man kann die Dinger kaskadieren, d.h. einfach hinter einander schalten. So sind selbst 32 Ausgänge mit den drei Pins kein Problem.
http://fritzing.org/projects/cat-leds
Hier wird das recht anschaulich dargestellt.
Im Seeteufel habe ich das auch so gemacht (allerdings mit zusätzlichen Treiber-Transistoren hinter den Ausgängen, da das im Bild gezeigte nur noch mit LOW-Current-LED's gemacht werden sollte wegen der Stromaufnahme), dort steuert letztendlich ein solcher Baustein den gesamten Christbaum an den Masten, und das Radar auch noch.
Die Portexpander kosten Pfennige, die Transistoren und Widerstände auch...
Auch die Ansteuerung ist nicht weiter kompliziert:
https://www.arduino.cc/en/Reference/ShiftOut
Man erzeugt einfach das passende Bitmuster (z.B. 00010000 wenn Kanal 4 an sein soll oder 11000000 für Kanäle 1 und 2), und schickt es raus, wie im Link beschrieben.
Durch diese Vorgehensweise kann man das so aufbauen, dass jedes Licht (Lämpchen, LED, was auch immer) an einem Ausgang des Portexpanders hängt. Nun kann man ganz beliebige Lichtmuster erzeugen, indem man einfach für die Ausgänge, die man gerade braucht, ne 1 raus schickt. Auch mal den ganzen Christbaum als Lauflicht nehmen, geht damit, oder irgendwelche Lampen blinken lassen, wenn der Akku leer wird.
Einziger Nachteil: die Lichter dimmen geht nur, wenn man alle zusammen dimmt.
Was switch/case angeht: ich weiss nicht, was der Compiler sagt, aber in der Arduino-Referenz find ich nix über irgendwelche Limits. Ich selbst hab da bestimmt schon mehr als 10 Auswahlmöglichkeiten benutzt, kein Problem.
Wahrscheinlich ist das Limit der verfügbare Speicher.
Was deine sechs Kanäle angeht: ich hab auch nicht mehr auf der MX. Das einzige, echte Problem isses immer, das Ganze so zu entwerfen, dass es "bedienbar" bleibt, d.h. man nach nem Jahr auch noch weiss, "wie das denn ging".
Daher hab ich mir z.B. eben die Bleuchtungssteuerung komplett vom Hals geschafft- es gibt keinerlei Grund, sowas von Hand zu steuern.
Es wird immer irgend ein Fahrzustand dargestellt. Du könntest z.B., wenn das Miniuboot am Haken hängt (dann ist der Kran in Betrieb, das kann der Arduino leicht detektieren) automatisch die Lichter für "manövrierbehindert" setzen oder so.
Gerade bei nem Schiff mit recht vielen Funktionen hat man auch so genug zu tun....
Beim Seeteufel zum Beispiel gehen automatisch die Schlepplichter an, so wie eine der Leinen ins Wasser geworfen wird. Und auch wieder aus, wenn ich die Leine abwerfe.
Für den ganzen Sermon brauche ich- überhaupt keinen Kanal.
Aber man kann noch mehr machen- zum Beispiel wird es kaum Sinn machen, einen Kran zu drehen, wenn er den Arm nicht zumindest minimal angehoben hat (oder wenigstens den Haken), so kann man einiges an Kanälen sparen. Ich bediene vier Servos (und damit vier Funktionen) mit "nem Rest von zwei Kanälen"- so, dass mir die Kanäle trotzdem noch für andere Funktionen zur Verfügung stehen.
Mein Bordrechner (ist allerdings ein Mega 2560) erledigt noch andere Dinge- er überwacht z.B. die Akkus und auch den Rumpf auf Wassereinbrüche. Wenn ich mal Lust haben werd, bau ich das noch weiter aus, ich will ne echte Drive-by-wire-Steuerung haben, bei der der Rechner meine Steuerkommandos lediglich richtig interpretiert und passend umsetzt. Das bietet dann z.B. Möglichkeiten wie nen Kreisel einzubauen, damit das Ding bei Steuerkommando "Ruder geradeaus" auch wirklich ganz gerade fährt.
Oder auch präzises Manövrieren rückwärts- das ist per Hand beim Seeteufel sehr schwierig.
Lesezeichen