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

2010年5月19日(水)

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

「あ」の表示

1列スキャンができました。あとは1列スキャンする際に必要なところだけを点灯させ高速スキャンさせれば任意の文字がだせます。


ノード側に点灯させたいデータを流すため「Data」、カソード側は順番に点灯させるため「Scan」と呼ぶことにします。


なお回路図は前回と同じです。

int row[] = {2, 3, 4, 5, 6, 7, 8, 9};
int col[] = {10, 11, 12};
int moji[] = {2, 37, 127, 42, 44, 41, 6, 0};
#define delaytime 200

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 output(int data){
  for(int i=0; i<8; i++){
    digitalWrite(row[7-i], (data>>i)&1);
   }
}

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++){
   output(0);
   scan(x) ;
   output(moji[x]);
   delay(delaytime);
  }
}

void loop(void){
  scantest();
}

int mojiの配列には表示させたいデータを入れます。


□□□□□□□□

□□■□□□□□

□■■■■■□□

□□■□□□□□

□□■■■■□□

□■■□■□■□

■□■■□□■□

□■■□□■□□


前回の例では10バーを利用したため横向きに見ましたが、縦のデータを利用します。

なので左1列目から


"00000010"=2

"00100101"=37

"01111111"=127

"00101010"=42

"00101100"=44

"00101001"=41

"00000110"=6

"00000000"=0

となります。


D


delaytimeを0にするかdelay(delaytime);をコメントアウトするときちんと静止画になります。


D


31行目ではoutput(0)を実行していったんLEDの表示を消しています。はじめこれに気づけず、


f:id:a10i:20100519001941j:image


のように文字がぶれてしまいました。なぜこうなるかはタイミングチャートを書いてみてるとわかります。


f:id:a10i:20100519013811j:image


左が理論上というか希望するタイミングですが、実際にはscanした後にoutputするためデータを表示する際には遅れが発生しています。その遅れで表示されてしまうのがピンクの部分でぶれたように見える原因です。

今回output(0);でいったん表示を消してぶれをとりましたが、本当は74138の6番目のenable pinをLOW->HIGでLEDの表示を消す方が速くかつスマートだと思います。


また前回説明なしでしたが抵抗はアノード側に入れます。カソード側に入れると縦に点灯するLEDの数によって流れる電流が変わるため輝度むらがでます。


f:id:a10i:20100524233838p:image


上記二つの問題を理解するまでにかなりかかってしまいました。私のようにマイコン初心者は同じことにはまるであろうけれどこういった説明はググっても出てこないためメモしておきます。


2010.05.24 輝度むら説明の図差し替え(LEDとRの入れ替えとループになおした図を追加)


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

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

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

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


画像認証

トラックバック - http://d.hatena.ne.jp/a10i/20100519/1274199481