Ja, Multiplexing und Charlieplexing haben beide ihre Vorteile und eignen sich jeweils am besten für unterschiedliche Aufgaben.
Der Hauptvorteil von Charlieplexing besteht darin, dass es auf einem mittelgroßen Mikrocontroller ausgeführt werden kann, der mehr LEDs mit weniger E / A-Pins und möglicherweise keine externe Hardware außer den LEDs ansteuert.
Jetzt gilt der Vorteil von "keine externe Hardware" nur für eine relativ kleine Anzahl von LEDs, bis Sie die aktuelle Grenze Ihres Mikrocontrollers erreichen, und es gibt eine Helligkeitsgrenze, die Multiplex-Arrays nicht haben. Wenn Sie keine externe Hardware verwenden, können Sie im Allgemeinen zu einem bestimmten Zeitpunkt nur eine LED in der Matrix ansteuern - anders als bei einem Multiplex-Array, bei dem Sie jeweils eine ganze Reihe ansteuern.
Wenn Sie externe Hardware hinzufügen, um die LEDs mit einer höheren Helligkeit zu betreiben, die der eines Multiplex-Arrays entspricht, verliert das Charlieplexing seinen Glanz.
Erstens wird ein gemultiplextes Array streng nach Zeile und Spalte adressiert. es ist sehr einfach, dies zu tun. Aktivieren Sie Zeile 1, aktivieren Sie alle Spalten für Zeile 1, deaktivieren Sie Zeile 2, aktivieren Sie alle Spalten für Zeile 2 und so weiter. Im Gegensatz dazu ist ein charlieplexiertes Array viel weniger einfach. Es gibt immer eine nutzlose diagonale Zeile, und ich persönlich verwende Nachschlagetabellen, um eine Beziehung zwischen meinen Arrays und einem rechteckigen Array herzustellen, in dem ich meine Daten speichere.
Zweitens und ein Mörder ist, dass Charlieplexing im Allgemeinen Tristate-Treiber erfordert. Das Multiplexen wird jedoch mit einer strengen binären Ein-Aus-Logik durchgeführt. Wenn Sie einen Mikrocontroller mit geringer Pinanzahl haben und eine große Anzahl von LEDs ansteuern möchten, können Sie problemlos externe Logikchips (z. B. Schieberegister und / oder LED-Treiber) zum Steuern der X- und Y-Achse verwenden. Die meisten Schieberegister-Chips unterstützen nicht das Tristating, das erforderlich ist, um dasselbe in einem charlieplexierten Array zu tun. Spezielle Charlieplex-Treiber sind verfügbar, aber bei weitem nicht so vielseitig.
Drittens ist in einem charlieplexierten Array jeder Pin, der nicht aktiv etwas tut, über eine schwache ("hochohmige") Verbindung mit den LEDs verbunden. Und obwohl die Verbindung schwach ist, ist sie ungleich Null. Angenommen, Sie haben 25 E / A-Pins mit einem LED-Raster verbunden. Wenn Sie eine LED aufleuchten lassen - indem Sie eine dieser 25 Leitungen hoch und eine dieser 25 Leitungen niedrig nehmen, verbleiben 23 Leitungen mit hoher Impedanz. An jeder Stelle, an der die High-I / O-Leitung durch eine LED zu einer neutralen Leitung führt, besteht die Möglichkeit, dass Strom abfließt. Nicht viel. Vielleicht eine Mikroampere hier oder da. Bei modernen, effizienten LEDs reicht dies jedoch häufig aus, um sichtbare Geisterbilder zu erzeugen.
Viertens ist es schwieriger, die LED-Helligkeit in einem Charlieplex-Array zu steuern. In einem Multiplex-Array können Sie eine beliebige Anzahl gängiger stromregelnder "sinkender" LED-Treiberchips verwenden, die die Helligkeit jeder Spalte separat regeln, indem Sie die Stromregelung in Kombination mit einem PWM-Treiber verwenden. In dem Maße, wie charlieplexierte Matrixpositionen einzeln adressiert werden und nur einen Widerstand pro Zeile oder Spalte verwenden, ist es viel schwieriger, eine Punkthelligkeitskorrektur und eine vollständige Graustufen- / Farbanimation in einem charlieplexierten Array durchzuführen.