SSブログ

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/

を赤だけ使うことにしました。

前回の自作シールドを使って電光掲示板をつくってみました。
matrix1608-p1.jpg
matrix1608-p2.jpg
接触不良のため、輪ゴムで固定しないと点灯しない行や列ができてしまいました。

スケッチを簡単にするため、ArduinoのI/Oピンの順番とLEDの列の順番を合わせました。
配線はUEW線というものを使いましたが、初めてのUEW線で、エナメルが熱で溶けるのかどうか、エナメルの被覆がはがれているのかどうかよくわからない状態で困難をきわめました。見た目も美しくありません。

matrix1608-1.jpg
今後の漢字表示のためにEEPROMも搭載しています。

matrix1608-2.png
LEDの真ん中の列は、赤のカソードで行(ROW)の順番どおりに配置されているので助かります。
(抵抗が入っていますが説明簡略化のためこの図にはなかったことにしてあります)

matrix1608-3.png
右側のLEDのカソードを左側のLEDの列(COL)となるアノードに

matrix1608-4.png
左側のLEDのカソードを右側のLEDの列(COL)となるアノードに

matrix1608-5.jpg
悲惨な裏面、、。

スケッチは比較的シンプルになりました。

// 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つ駆動することができるんじゃないかなぁと思っています。
rg8x8x3.png
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 はすごいなぁ。
ただ、駆動する個数が増えると電流や明るさの問題がでてくるかもしれませんね。

nice!(0)  コメント(2)  トラックバック(0) 

nice! 0

コメント 2

NO NAME

TOM-1588BH、ほんのわずかだけ在庫があるのか、八潮で時々見掛けます……
by NO NAME (2011-11-26 20:47) 

kenkenpa

最近、秋月電子で新たなマトリックスLEDが追加されていました。

赤色ドットマトリクスLED[8x8ドット] OSL641501-ARA
http://akizukidenshi.com/catalog/g/gI-05163/
by kenkenpa (2011-11-28 08:18) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。