赤色ドットマトリクスLEDを使ってみる

さて、なんとなくArduinoの入出力になれてきた気もしてきた今日この頃ですが、今日は赤色ドットマトリクスLEDを使って文字の表示に挑戦してみました。

赤色ドットマトリクスLEDとは

赤色ドットマトリクスLEDというのは、こんな見た目をしています。 表面には8x8で64個のLEDがあって、裏面には16本のピンがあります。 この白い○みたいなものが一つ一つLEDで、設定によって光ったり光らなかったりするわけです。

秋月電子で購入しました。(赤色ドットマトリクスLED(OSL641501-ARA))(説明書

20121230-160807.jpg

LEDの極性を調べる

さて、説明書を読んでみたんですけど、裏面の16本のうち、どのピンとどのピンの間に電流を流せばどのLEDが光るのかちっともわからなかったので、ピン一本一本の仕様を確認してみました。

そもそも、LED(発光ダイオード)っていうのは、抵抗などと違って電流の流れる向きと流れない向きがあるんですよね。 電子部品では、バッテリーのプラスにつなぐ方をアノード、マイナスにつなぐ方をカソードというそうです。 アノードとカソードを逆向きにつなぐと、発光ダイオードが光らないだけではなく、電圧によっては発光ダイオードが壊れてしまうとか。

とりあえず、どのピンがアノードでどのピンがカソードを調べるために、Arduionoのミニブレッドボードで簡易検査機を作ってみました。

こんな(↓)感じで回路をくんで、普通のLEDでテスト。そのあと、赤色ドットマトリクスLEDのピンの一本一本をチェックしてみました。

20121230-161318.jpg

20121230-160825.jpg

赤色ドットマトリクスLEDのアノードピンとカソードピン

両側に8本ずつのピンがついているので、てっきり片方の8本がアノード、もう片方の8本がカソードだとばかり思っていましたが、アノードとカソードがぐちゃぐちゃにまざっているんですね。 (写真で赤い○がついているのがアノードピン、黄色い○がカソードピンです。)

ピン番号13のアノードピンからピン番号9のカソードピンにだけ電流を流すと、画面のすみっこのLEDだけが光るということです。

赤色ドットマトリクスのピン配置

20121230-161328.jpg

一つだけLEDを光らせる

ここまでわかったので、一つだけLEDを光らせてみることにします。 回路はこんな感じで。 20121230-200244.jpg

ソースコードはこちらです。 アノードピンをLOW、カソードピンをHIGHで初期化。 そのあとピン番号13のアノードピンをHIGH、ピン番号9のカソードピンをLOWにすると、すみっこのピンだけが光るというわけです。 (もしカソードピンをLOWで初期化してしまうと、この時にすべてのピン番号13のアノードピンからすべてのカソードピンに電流が流れて、LEDが一列光ることになります。)

void setup(){

  pinMode(A0,OUTPUT); // pin1 cathode
  pinMode(A1,OUTPUT); // pin2 cathode
  pinMode(A2,OUTPUT); // pin3 anode
  pinMode(A3,OUTPUT); // pin4 anode
  pinMode(A4,OUTPUT); // pin5 cathode
  pinMode(2,OUTPUT); // pin6 anode
  pinMode(3,OUTPUT); // pin7 cathode
  pinMode(4,OUTPUT); // pin8 cathode
  pinMode(5,OUTPUT); // pin9 cathode
  pinMode(6,OUTPUT); // pin10 anode
  pinMode(7,OUTPUT); // pin11 anode
  pinMode(8,OUTPUT); // pin12 cathode
  pinMode(9,OUTPUT); // pin13 anode
  pinMode(10,OUTPUT); // pin14 cathode
  pinMode(11,OUTPUT); // pin15 anode
  pinMode(12,OUTPUT); // pin16 anode

  digitalWrite(A0,HIGH);
  digitalWrite(A1,HIGH);
  digitalWrite(A2,LOW);
  digitalWrite(A3,LOW);
  digitalWrite(A4,HIGH);
  digitalWrite(2,LOW);
  digitalWrite(3,HIGH);
  digitalWrite(4,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(6,LOW);
  digitalWrite(7,LOW);
  digitalWrite(8,HIGH);
  digitalWrite(9,LOW);
  digitalWrite(10,HIGH);
  digitalWrite(11,LOW);
  digitalWrite(12,LOW);
}

void loop(){
  
  digitalWrite(9,HIGH); // pin13
  digitalWrite(5,LOW); // pin9

}

全部のLEDを順番に光らせる

次に、ループをまわしてすべてのLEDを順々に光らせます。

回路は同じもので、ソースコードはこちら。 (ピン番号を配列で整理しました。)

int anode[8] = {9,A2,A3,6,2,7,11,12};
int cathode[8] = {5,10,4,8,A0,3,A1,A4};

void setup(){
  
  for(int i=0; i<8;i++){
    pinMode(anode[i],OUTPUT);
    digitalWrite(anode[i],LOW);
  }
  
  for(int i=0; i<8;i++){
    pinMode(cathode[i],OUTPUT);
    digitalWrite(cathode[i],HIGH);
  }

}

void loop(){
  
  for( int i=0; i<8;i++){
 
    for( int j=0; j<8; j++){

      digitalWrite(anode[j],HIGH);
      digitalWrite(cathode[i],LOW);
      delay(100);
      digitalWrite(anode[j],LOW);
      digitalWrite(cathode[i],HIGH);
     
    }
    
  }

}

動作するとこんな感じです。 (一列目のLEDだけ動作が変なんですよね。これはパーツに問題があるんだと思いますが……。)

文字を表示してみる

次に肝心の文字を表示してみます。 上のソースコードを変更して、特定のLEDだけを光らせてみました。

定常的に光らせているとばかり思っていたんですが、ドットマトリクスLEDの構造上、同時に複数のLEDを光らせるのは難しいんですね。 一回に一つLEDを表示させ、それを速いスピードで切り替えることによって残像効果で文字を表示しているそうです。

ここではひらがなの「あ」を表示させています。

int anode[8] = {9,A2,A3,6,2,7,11,12};
int cathode[8] = {5,10,4,8,A0,3,A1,A4};

boolean hiragana_a[8][8] = { 
  { 0, 0, 1, 0, 0, 0, 0, 0 },
  { 1, 1, 1, 1, 1, 1, 0, 0 },
  { 0, 0, 1, 0, 0, 0, 0, 0 },
  { 0, 0, 1, 1, 1, 1, 0, 0 },
  { 0, 1, 1, 0, 0, 1, 1, 0 },
  { 1, 0, 1, 0, 1, 0, 1, 0 },
  { 1, 0, 0, 1, 0, 0, 1, 0 },
  { 0, 1, 1, 0, 0, 1, 0, 0 }
};

void setup(){
  
  for(int i=0; i<8;i++){
    pinMode(anode[i],OUTPUT);
    digitalWrite(anode[i],LOW);
  }
  
  for(int i=0; i<8;i++){
    pinMode(cathode[i],OUTPUT);
    digitalWrite(cathode[i],HIGH);
  }

}

void loop(){
  
  for( int i=0; i<8;i++){
 
    for( int j=0; j<8; j++){

      if( hiragana_a[i][j]){
        digitalWrite(anode[j],HIGH);
        digitalWrite(cathode[i],LOW);
        digitalWrite(anode[j],LOW);
        digitalWrite(cathode[i],HIGH);
      }
    }
  }
}

写真はこちらです。 (一列目の表示がちょっと変ですが……。)

20121230-201849.jpg

まとめ

ドットマトリクスLEDってもう少し楽に使えるパーツかと思っていましたが、意外に難しいんですね。 パーツに、ピン番号などが書いていなかったので結構わかりにくかったんですけど、電子工作ってこんなもんなんでしょうか。

なお、下記のページを参考にさせていただきました、ありがとうございました。

(パーツに問題があるときには返品できるのかな……。)