CharlieplexingCharlepexingcharlieplexingは少ないポートで多くのLEDを制御する方法である。」や「少ないI/Oで多数のLEDを制御、同時点灯も可能」で、誰でも同じことを考えるものだと思った。(1)」という解説がある。6個のLEDを制御する例)CharliePlexの問題点は、基本的に1個のLEDしか制御できないため、LEDが多くなるとデューティー比が小さくなりピーク電流を多く流さなければならなくなるが、I/Oポートのドライブ能力が低い場合には十分な電流が流せないという点である。問題を解決したCharlieplexの拡張版がいろいろある。Ideasにある「少ないI/Oで多数のLEDを制御、同時点灯も可能」のように電流ドライブ用のトランジスタを使うと複数のLEDが制御できる。トランジスタをエミッタフォロアで使っているところがミソである。AVRのようにドライブ能力が高いマイコンはダイオードを使用することもできる。Chipiplexing方式(Charlieplexの拡張)を使うと、7segLEDは9桁が9本のI/Oで駆動でき、DPを使用しないなら8本のI/Oで8桁が制御可能である。CharlieplexをマトリクスLEDで使おうとするとちょっと厳しい。2)...(n,n)が駆動できない。巷で売られているマトリクスLEDは全て↓のように配線されている。2nが制御可能である。市販のマトリクスLEDは何本のI/Oで駆動できるか考えてみる。Chipiplexing方式のトランジスタをサイリスタに変えると、N×NのマトリクスLEDは同じようにN+1本で制御できそうだ。サイリスタは一旦ONするとゲート電流を流し続ける必要がなくなるのでLED点灯用データが出力できるようになるというもの。ONとなり、SCR2がONしてしまう。SCR2がONしないようにするには、SCR2のゲート(P1)を'L'にしておく必要があるのだが、SCR2のゲートとSCR1のカソードは繋がっているので、P1を'L'にするとLED(1,2)が点灯してしまう。SCR1だけONしようとするとLED(1,2)~LED(1,7)までのLEDが全て点灯することになる。電流が流れているので、SCR1のカソードに接続されたR9やポートP9は必要ない。(データ出力負論理)でよい。市販のN×NのマトリクスLEDはN個のポートで制御できる。data;}※SCRのゲートをONした後の時間待ちは電源電圧によって異なるので用調整。↓の回路図で常時P9を'Z'とする方法で試してみた。LEDで表示しようとすると12個のLEDが必要である。これをCharlieplexingでATTiny45の3つのI/Oを使って実装してみた。←リンク先にAVIリセット時には、全てのLEDが右下から順に点灯し、11:40からカウントが始まる。時分しか表示できないので撮影用に1秒毎にカウントアップするようにしている。I/Oポートがもう一個あって4個あるなら普通にCharlieplexingで駆動するのが簡単だと思う。本当に時計として使うならC3をトリマに変えて発振周波数を合わせる必要がある。10-5まで追い込むと日差1秒以内に収まりそうだけれど、追い込みに時間がかかるので、TCXOを使うのが現実的だろう。オーブンを使わないと難しいのかな。コンピュータで解くならば虱潰しで解いても大した計算量ではない。再帰で書くとカッコ良いがメモリが少ないとスタック(メモリ)が足りなくなるので組み込み用マイコンで解こうとすると結構遊べる。←リンク先にAVI(2.4Mb)もっと早く解けるのだが、バックトラックの過程が見えないので遅くしてある。解けるとちょっと止まる。gameがよく載っていた。最初面白いゲームかと思ってソースを打ち込んだら、ただのシュミレーションでがっかりしたことがあった。←リンク先にAVI(3.4Mb)(2013/4/22)コメントコメントを書くコメントは記事投稿者が公開するまで表示されません。(哲学はなぜ間違うのか)。