ikkei blog

電子工作やパズルのブログです。主にLEDを使った電子工作をやっています。

16 segment LED コールサインプレート その3

2012年08月05日 14時58分57秒 | Arduino
16セグメントLEDを使ったコールサインプレートを再度作り直してみました。




え、どこが変わったの? って?

はい、変わったのは回路図です。
Charlieplexingと言うと、LEDの接続が特殊だと言うことで、
敬遠されがちですが、なんとか普通の接続方法に
近いものにならないだろうかと、考えていました。

始めは出来るだけ普通の接続のようにできるだけ平行に
つなごうとして、コモンと1つのセグメントを順に入れ替えて
いくやり方をikkeiplexingとしてきましたが、
配線的にはオリジナルと大して変わりませんでした。

では、今回はどうしたかと言うと、発想を180度変えて
LEDごとに全部入れ替えると言うやり方です。
つまり、配線の並びを変えずにLEDのピンアサインを
1つずつずらしていくのです。

その回路図がこれです。CAD泣かせ、禁断の斜め線です。

各桁の配線は全部同じになっていることが分かると思います。
これなら、桁数を増やす場合でも、何も考えずに拡張していけます。
この配線を改めてikkeiplexingとしたいと思います。

スケッチは以前とほぼ同じで、以下の部分だけが変更になります。
// 1st digit pin assign
#define L01 1 // Anode ・・・・Common
#define L02 2 // G2
#define L03 3 // B
#define L04 4 // A2
#define L05 5 // J
#define L06 6 // I
#define L07 7 // A1
#define L08 8 // H
#define L09 9 // F
#define L10 12 // G1
#define L11 11 // E
#define L12 10 // D2
#define L13 A0 // M
#define L14 A1 // L
#define L15 A2 // D1
#define L16 A3 // K
#define L17 A4 // C
#define L18 A5 // DP

const byte LINE[ 6 ][ 18 ] = {
{ L06, L07, L08, L09, L10, L11, L12, L13, L14, L15, L16, L17, L01, L02, L03, L04, L05, L18 },
{ L05, L06, L07, L08, L09, L10, L11, L12, L13, L14, L15, L16, L17, L01, L02, L03, L04, L18 },
{ L04, L05, L06, L07, L08, L09, L10, L11, L12, L13, L14, L15, L16, L17, L01, L02, L03, L18 },
{ L03, L04, L05, L06, L07, L08, L09, L10, L11, L12, L13, L14, L15, L16, L17, L01, L02, L18 },
{ L02, L03, L04, L05, L06, L07, L08, L09, L10, L11, L12, L13, L14, L15, L16, L17, L01, L18 },
{ L01, L02, L03, L04, L05, L06, L07, L08, L09, L10, L11, L12, L13, L14, L15, L16, L17, L18 },
};


さらによく見ると、DPのラインだけは他のラインとは別になって
平行につながっています。
これには理由があります。

実は、この前に全部順送りにする回路を書いて配線してみました。

でも、これはうまくいきませんでした。

はい、ここで問題です。
それは、なぜでしょうか?
分かった人はコメントして下さい。

ヒントはこのLED KA2311-42B のデータシートにあります。