ドット表示プログラム
最初に、pattern[]配列に列方向に点灯パターンを設定します。下に例の場合、pattern[1]=0x24 ですから 00100100
になり、第2列では上から3と6番のLEDが点灯します(一番上を1と数えます)。
digitalWrite(PIN_COL1 + col,(data >> col & 0x1)) で、PIN_COL1
+ col で行方向の端子を指定します。data >> col でdata を col 回右シフトし、 & 0x1 で一番左のビットをとりだしています。
//8×8ドットマトリクスLED
//配線 BU5004:DMとする
//D2〜D9:330Ω抵抗を介して DM の 7,4,3,2,10,11,12,15と MINIの D2-D9
//DMの 16,1,14,13 を MINIの D10-D13、DMの5698を MINIのA0〜A3 に接続
//ドットパターン(縦列データ)
int pattern[] = {0,0x24,0x7e,0x7e,0x7e,0x3c,0x18,0};
//1番目のピン(ここから8箇所連続する)
const int PIN_COL1 = 2;//COL(横)の1番目
const int PIN_ROW1 = 10;//ROW(縦)の1番目
void setup(){
//ピンの設定 ピン番号 0..13 は D0..D14に対応
//ピンの設定 ピン番号 14..19は A0..A5に対応
for(int i = 0; i < 8;i++){
pinMode(PIN_COL1 + i,OUTPUT);
pinMode(PIN_ROW1 + i,OUTPUT);
}//for
}//setup
void loop(){
for(int k = 0;k < 10;k++){
//間延びで10回
for(int row = 0;row < 8;row++){
int data = pattern[row];//列の点灯パターン
// int data = 0xff;//1line
//各列のドットを表示
for(int col = 0;col < 8;col++)
digitalWrite(PIN_COL1 + col,(data >> col & 0x1));//1ドット×8
digitalWrite(PIN_ROW1 + row,LOW);//列方向の端子をLにして表示
delay(4);
digitalWrite(PIN_ROW1 + row,HIGH);//表示終了
}//for row
}//for k
}//loop
スクロール表示
8*8 のドットマトリックスでは1文字程度しか表示できません。8*n ドットの配列をスクロールしながら表示するプログラムを紹介します。スクロール表示するパターンを scpat[]
に作成します(行数がscsize)。この配列から、8行分を切り出して、pattern[] にコピーします。この時、1行づつずらしながらコピーすると、スクロール表示ができます。コピーする先頭を
sco に記録します。
//8×8ドットマトリクスLED
//スクロール表示をする
//表示するドットパターン
int pattern[] = {
B00000000,
B00011110,
B00010010,
B11111111,
B00010010,
B00011110,
B00000000,
B00000000,
} ;
//中京の文字
int scpat[] = {
B00000000,
B00011110,
B00010010,
B11111111,
B00010010,
B00011110,
B00000000,
B00000000,
B00000000,
B00000010,
B10111010,
B00101010,
B11101011,
B00101010,
B10111010,
B00000010,
} ;
int scsize=16;
int sco;
//1番目のピン(ここから8箇所連続する)
const int PIN_COL1 = 2;//COL(横)の1番目
const int PIN_ROW1 = 10;//ROW(縦)の1番目
void setup(){
//ピンの設定 ピン番号 0..13 は D0..D14に対応
//ピンの設定 ピン番号 14..19は A0..A5に対応
for(int i = 0; i < 8;i++){
pinMode(PIN_COL1 + i,OUTPUT);
pinMode(PIN_ROW1 + i,OUTPUT);
}//for
sco=0;
}//setup
void loop(){
for(int k = 0;k < 7;k++){
//間延びで10回
for(int row = 0;row < 8;row++){
int data = pattern[row];//列の点灯パターン
// int data = 0xff;//1line
//各列のドットを表示
for(int col = 0;col < 8;col++)
digitalWrite(PIN_COL1 + col,(data >> col & 0x1));//1ドット×8
digitalWrite(PIN_ROW1 + row,LOW);//列方向の端子をLにして表示
delay(2);
digitalWrite(PIN_ROW1 + row,HIGH);//表示終了
}//for row
}//for k
//スクロールする
sco++;
if(sco>scsize) sco=0;
for(int i=0;i<8;i++){
pattern[i]=scpat[(sco+i)%scsize];
}
}
MINI ボードによる接続と表示例