思い出はいつまでも このページをアンテナに追加 RSSフィード Twitter

2010年5月17日(月)

8x8ドットマトリクスLED #1

Arduinoだけで1列スキャン

これまでに「順番に点灯」と「任意に点灯」を行いました。これらを応用して8x8ドットマトリクスLEDを制御します。

ドットマトリクスLED(TOM-1588BH-B/C-4880X)の回路図をデータシートから抜き出したものです。


f:id:a10i:20100517233921p:image


データシート


回路図では少し複雑ですが、光っているある瞬間は8バーのものが8列並んだものだとイメージします。



まずは縦に1列全灯を順番に点灯させてみます。


f:id:a10i:20100517233922p:image


int row[] = {2, 3, 4, 5, 6, 7, 8, 9};
int col[] = {10, 11, 12, 14, 15, 16, 17, 18};

void setup(void){
  for (int r=0; r<8  ; r++) {
    pinMode(row[r], OUTPUT);
    digitalWrite(row[r], HIGH);
  }
  for (int c=0; c<8  ; c++) {
    pinMode(col[c], OUTPUT);
    digitalWrite(col[c], HIGH);    
  }
}

void scan(int data){
  for(int s=0; s<8; s++){
    digitalWrite(col[s], (data>>s)&1);
  }
}

void scantest(void){
  for(int x=0; x<8; x++){
   scan(x) ;
   delay(200);
  }
}

void loop(void){
  scantest();
}

# 前回と同様なため動画は省略します。



IC 74HC138

1列スキャンができました。がこのままでは将来的に8x8を二つならべた8x16にした場合などにArduinoI/O pinの数が足りなくなってきます。

そこで偉い人は考えました。0と1の信号を3つ組み合わせれば8つの0と1の信号に変えることができる、と。

どういうことかというと、2進数で000〜111までが10進数で0〜7までの8個にあたることを利用するのです。

入力する3つの信号をA0〜A2とし、その3つの信号で2進数を読み替えた10進数にあたるpinY0〜Y7に信号を出力するというものです。


A0A1A2Y0Y1Y2Y3Y4Y5Y6Y7
00001111111
00110111111
01011011111
01111101111
10011110111
10111111011
11011111101
11111111110

これをICチップにしたものが74HC138(74138/3to8)です。


f:id:a10i:20100517220134j:image


データシート


74138で1列scan

74138を使って1列を連続点灯してみます。


f:id:a10i:20100517233923p:image


f:id:a10i:20100517231421j:image


int row[] = {2, 3, 4, 5, 6, 7, 8, 9};
int col[] = {10, 11, 12};
#define delaytime=1000

void setup(void){
  for (int r=0; r<8  ; r++) {
    pinMode(row[r], OUTPUT);
    digitalWrite(row[r], HIGH);
  }
  for (int c=0; c<3  ; c++) {
    pinMode(col[c], OUTPUT);
    digitalWrite(col[c], HIGH);    
  }
}

void scan(int data){
  for(int s=0; s<3; s++){
    digitalWrite(col[s], (data>>s)&1);
  }
}

void scantest(void){
  for(int x=0; x<8; x++){
   scan(x) ;
   delay(delaytime);
  }
}

void loop(void){
  scantest();
}

D


あくまで自分がわからなかったところを調べ、個人的に行った実験のメモとなります。

当サイトを利用して生じた損失・損害等、いかなる不利益も保証いたしかねます。

あらかじめご了承ください。


# 2010.07.15 回路図がテレコになっていたため修正

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/a10i/20100517/1274100686