ノンノさんに教えて頂いたマキシム方式(Charlieplexingというらしい)の実験をしてみました。
Charlieplexingの原理です。
N=2から。
A、B2本のI/O線にLEDをつなぐ繋ぎ方は2通りあります。
A>BとB>Aですね。
A=Hi、B=Loで左側のLEDが、逆にすると右側のLEDが点灯します。
LEDはダイオードなので、逆の電圧が掛かっていますが、点灯しません。
2本のI/O線で2つのLEDの制御ができました。
同時には光りませんが、高速に切り替えてやれば、両方点灯しているように見えます。
N=3では、
A,B,Cの3本になりました。
AB,AC,BA,BC,CA,CBの6通りの繋ぎ方があります。
A=Hi、B=Loで一番左のLEDが点灯します。
このときCには何もつなぎません。
このように3本の線のうちどれか2本を選んで、Hi/Loを出力すれば任意の1つを点灯することができます。
何も繋がない状態にするには、ポートを入力に設定します。
ブレッドボードで6個のLEDで実験をしてみました。
3本の抵抗をポートA、B、Cに繋ぎますが、電源からミノムシクリップで、5Vをかけてテストしました。
今回は手動でテストしましたが、Tanukinoでこの操作をプログラムします。
N=4でも考え方は同じです。12個のLEDを制御できます。
Nを増やしていくと、N*(N-1)個のLEDを制御できます。
N=9の回路図です。大きいのでクリックしてください。
8個づつ区切って、a,b,c,d,e,f,g,pと名前をつけてみました。
8個のLED単位でみると、アノードコモンの7セグLEDに見えます。
カソードコモンの場合はLEDの向きを反対にすればOKです。
この回路で72個のLED=9桁までの7セグを制御することができることになります。
TanukinoのI/Oは最大20本あるので、20*19=380個のLEDを制御できそうですが、配線が大変そうですね。
巨大LedCubeは作るのが大変なので、7セグ4桁くらいの表示器でも作ってみようと思います。
パラに接続された2桁LEDは使えませんので、1桁のLEDが必要になります。
同じピンを繋ぐわけではないので、配線が大変そうですね。