日々の記録

ほどよく書いてきます。

Arduino UNO R3でドットマトリックスLEDを点灯する。

2013年09月11日 00時47分21秒 | 電子工作

I tried to use dot matrix led with Arduion UNO R3

Arduino UNO R3でドットマトリックスLEDを点灯させてみた。


I bought this matrix leds at Nihonbashi Osaka, this is easy to use on bread board.
the interface is serial with clock signal (receiving data with HC595).


ドットマトリックスは、大阪日本橋のデジットで購入。ブレッドボードに刺すだけ超簡単。
クロックドシリアル接続 Dot812_88D_13SU ダイナミック駆動8×8ドット LEDモジュール
共立エレショップにはまだ登場してないかも

詳細はデジットブログへ
http://trackback.blogsys.jp/livedoor/digit4555/51883614
カラム側が0で点灯なので間違えないこと。以下のArduinoプログラムも反転出力させています。
active low with column lines.

データの作成はさすがに面倒臭いのでエクセルを使いました。というか、このテのものはデータ作成がほぼすべてですね。
I used microsoft Excel to make binary data as below. I have no idea to make font data. 


条件付書式で、1を書き込むと赤くなるようにしてある。コレで絵が見やすくなります。
上から1,2,4,8,16,32,64,128(2^0~2^7)と重みを乗算してから全部加算し8ビットのデータにします。文字の下の部分の列をメモ帳に貼り付け、TABを,に置換して配列にすればOKさ。

以下Arduinoのプログラム内容


//Define Pins connected to 74HC595
int latchPin = 2;
int clockPin = 3;
int dataPin = 4;
 
//Data. Make sure to use PROGMEM
prog_uchar Data[] PROGMEM = {
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
254,16,16,16,254,0,28,42,42,26,0,254,
0,0,254,0,28,34,34,28,0,3,0,0,60,2,28,2,60,0,
28,34,34,28,0,62,16,32,32,0,254,0,28,34,34,254,0,250,0,0,0,
60,2,28,2,60,0,94,0,32,124,34,0,254,32,32,30,0,0,0,62,72,136,72,62,0,
62,16,32,32,0,28,34,34,254,0,60,2,2,62,0,94,0,62,16,32,32,30,0,28,34,34,28,0,0,0,
252,2,2,2,252,0,254,64,56,4,254,0,124,130,130,130,124,0,0,0,
254,144,152,148,98,0,68,146,146,146,108,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
//Macro to access data on flash memory
#define DataList(number) pgm_read_byte(&Data[number])
 
void setup() {
//uses 3 pins for output, Latch, Clock, and Data.
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
//ground latchPin and hold low for as long as you are transmitting
for(unsigned char k =0;k<156;k++){
for(unsigned char j =16;j>0;j--){
/* counting j for speed control */
for(unsigned char i=0;i<8;i++){
digitalWrite(latchPin, LOW); //start sending data
shiftOut(dataPin, clockPin, MSBFIRST, ~DataList(i+k+8)); //column data to right side LED matrix, Low to light
shiftOut(dataPin, clockPin, MSBFIRST, 1<<i); //common data, High to light
shiftOut(dataPin, clockPin, MSBFIRST, ~DataList(i+k)); //column data to left matrix
shiftOut(dataPin, clockPin, MSBFIRST, 1<<i); //common data
digitalWrite(latchPin, HIGH);
}
}
}
}


今回は左側、右側の順番にデータを送っているのだが、ところてん的なデータの流れがあるので右側に送り出す信号を予めぶち込んでおいて、左側のデータをたたき込む、こんな手順です。
左右逆転するときは、データを送り出す順番に気をつける。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« LTSpiceでOPA134, LM358を使う | トップ | ビットセットマクロ(備忘録) »

コメントを投稿

電子工作」カテゴリの最新記事