16x8 マトリックスLED 電光掲示板 [Arduino]
Arduinoで、8x8マトリックスLEDを1つなら普通なのですが、
ikkei Electronics:
http://web.mac.com/kxm_ikkei/Site/Welcome.html
ここに、なんと16ピンだけで8x8マトリックスLEDを2つも駆動する方法が詳細に書いてありました。
「Charlieplexingの考察と8x8ドットマトリクスLEDへの適用.pdf」
を熟読してなんとか理解しました。
肝は、Arduino のI/Oを 入力(INPUT)にすることでHi-Z (ハイ・インピーダンス:回路の出力が電気的に接続されていないような状態)とすることの様です。
とても感心いたしました。
赤色LEDドットマトリクス(8×8)38x38mm TOM-1588BH
http://akizukidenshi.com/catalog/g/gI-00963/
が、販売終了になってしまったので、
2色(赤・緑)LEDドットマトリクス(8×8) BU5004-RG
http://akizukidenshi.com/catalog/g/gI-00889/
を赤だけ使うことにしました。
前回の自作シールドを使って電光掲示板をつくってみました。
接触不良のため、輪ゴムで固定しないと点灯しない行や列ができてしまいました。
スケッチを簡単にするため、ArduinoのI/Oピンの順番とLEDの列の順番を合わせました。
配線はUEW線というものを使いましたが、初めてのUEW線で、エナメルが熱で溶けるのかどうか、エナメルの被覆がはがれているのかどうかよくわからない状態で困難をきわめました。見た目も美しくありません。
今後の漢字表示のためにEEPROMも搭載しています。
LEDの真ん中の列は、赤のカソードで行(ROW)の順番どおりに配置されているので助かります。
(抵抗が入っていますが説明簡略化のためこの図にはなかったことにしてあります)
右側のLEDのカソードを左側のLEDの列(COL)となるアノードに
左側のLEDのカソードを右側のLEDの列(COL)となるアノードに
悲惨な裏面、、。
スケッチは比較的シンプルになりました。
Arduinoだとピン数が足りないけど、Sanguino や Arduino mega だと、24ピンだけで 8x8の2色マトリックスLEDを3つ駆動することができるんじゃないかなぁと思っています。
2色のマトリックスLEDを3つつなげようと思うと
単純に接続した場合、
(Red 8 + Green 8 + Common 8) x 3 = 72 ピン
commonを3個で共有したとしても、
(Red 8 + Green 8) x 3 + Common 8 = 56 ピン
逆にRed, Greenを3個で共有したとしても、
Red 8 + Green 8 + Common 8 x 3 = 40 ピン
必要なはず。
ikkeiplexing はすごいなぁ。
ただ、駆動する個数が増えると電流や明るさの問題がでてくるかもしれませんね。
ikkei Electronics:
http://web.mac.com/kxm_ikkei/Site/Welcome.html
ここに、なんと16ピンだけで8x8マトリックスLEDを2つも駆動する方法が詳細に書いてありました。
「Charlieplexingの考察と8x8ドットマトリクスLEDへの適用.pdf」
を熟読してなんとか理解しました。
肝は、Arduino のI/Oを 入力(INPUT)にすることでHi-Z (ハイ・インピーダンス:回路の出力が電気的に接続されていないような状態)とすることの様です。
とても感心いたしました。
赤色LEDドットマトリクス(8×8)38x38mm TOM-1588BH
http://akizukidenshi.com/catalog/g/gI-00963/
が、販売終了になってしまったので、
2色(赤・緑)LEDドットマトリクス(8×8) BU5004-RG
http://akizukidenshi.com/catalog/g/gI-00889/
を赤だけ使うことにしました。
前回の自作シールドを使って電光掲示板をつくってみました。
接触不良のため、輪ゴムで固定しないと点灯しない行や列ができてしまいました。
スケッチを簡単にするため、ArduinoのI/Oピンの順番とLEDの列の順番を合わせました。
配線はUEW線というものを使いましたが、初めてのUEW線で、エナメルが熱で溶けるのかどうか、エナメルの被覆がはがれているのかどうかよくわからない状態で困難をきわめました。見た目も美しくありません。
今後の漢字表示のためにEEPROMも搭載しています。
LEDの真ん中の列は、赤のカソードで行(ROW)の順番どおりに配置されているので助かります。
(抵抗が入っていますが説明簡略化のためこの図にはなかったことにしてあります)
右側のLEDのカソードを左側のLEDの列(COL)となるアノードに
左側のLEDのカソードを右側のLEDの列(COL)となるアノードに
悲惨な裏面、、。
スケッチは比較的シンプルになりました。
// 8x8 matrix LED を ikkeiplexing で 2個使う byte hello[] = { 0b11111111, 0b00010000, 0b11111111, 0b00000000, 0b01111000, 0b10010100, 0b01011000, 0b00000000, 0b11111111, 0b00000000, 0b11111111, 0b00000000, 0b01110000, 0b10001000, 0b10001000, 0b01110000 }; void setup() { } void loop() { matrixRefresh( hello ); } void matrixClear() { for(int i = 0; i < 16; i++ ) pinMode( i + 2, INPUT ); } void matrixRefresh( byte bitmap[] ) { for(int x = 0; x < 16; x++ ){ matrixClear(); pinMode( x + 2, OUTPUT ); // 点灯する列を指定 digitalWrite( x + 2, LOW ); for(int y = 0; y < 8; y++ ) { // 指定列のデータを表示 if( bitRead( bitmap[x], y ) ) { pinMode( y + ( ( x < 8) ? 10 : 2 ) , OUTPUT ); digitalWrite( y + ( ( x < 8) ? 10 : 2 ) , HIGH ); } } delay(1); } }
Arduinoだとピン数が足りないけど、Sanguino や Arduino mega だと、24ピンだけで 8x8の2色マトリックスLEDを3つ駆動することができるんじゃないかなぁと思っています。
2色のマトリックスLEDを3つつなげようと思うと
単純に接続した場合、
(Red 8 + Green 8 + Common 8) x 3 = 72 ピン
commonを3個で共有したとしても、
(Red 8 + Green 8) x 3 + Common 8 = 56 ピン
逆にRed, Greenを3個で共有したとしても、
Red 8 + Green 8 + Common 8 x 3 = 40 ピン
必要なはず。
ikkeiplexing はすごいなぁ。
ただ、駆動する個数が増えると電流や明るさの問題がでてくるかもしれませんね。
2011-06-05 00:48
nice!(0)
コメント(2)
トラックバック(0)
TOM-1588BH、ほんのわずかだけ在庫があるのか、八潮で時々見掛けます……
by NO NAME (2011-11-26 20:47)
最近、秋月電子で新たなマトリックスLEDが追加されていました。
赤色ドットマトリクスLED[8x8ドット] OSL641501-ARA
http://akizukidenshi.com/catalog/g/gI-05163/
by kenkenpa (2011-11-28 08:18)