1 ソフトウェア インストール編
2 電子パーツ購入編
3 (共通)準備編
4 基本編
5 フルカラーLED編
6 ミニ電光掲示板編(1)
7 ミニ電光掲示板編(2)
いよいよ、ミニ電光掲示板編です。
実は、配線に関しては「基本編」や「フルカラーLED編」よりずっと簡単です。
まず、(共通)準備編、基本編、フルカラーLED編で、PC と Arduino が USBケーブルで繋がっている場合は、USBケーブルを抜いてください。
以降、ブレッドボードにパーツを抜き差しする時は必ず USBケーブルを抜いてください。
ケーブルを指したまま(電源が入ったまま)ブレッドボードのパーツを抜き差しすると、電子パーツが破損します。
基本編やフルカラーLED編で、LED や CDS を繋いでいる方は、(共通)準備編の状態へ戻してください。
マトリクスLED(MAX7219)とブレッドボードを接続します。
VCC → ブレッドボードの「+」
GND → ブレッドボードの「-」
DIN → Arduino Nano の D2 ピン
CS → Arduino Nano の D3 ピン
CLK → Arduino Nano の D4 ピン
マトリクスLED(MAX7219)に付属しているメス-メスのジャンパー線をマトリクスLED(MAX7219)に刺し、やわらかいジャンパー線(オス-オス)に繋いで、上記の説明通り、ブレッドボードに接続します。
配線が出来たら、開発環境で以前のプログラムを消して、下記の新しいプログラムをロードしてみてください。
int dataIn = 2;
int load = 3;
int clock = 4;
int e = 0;
void putByte( byte data ){
byte i = 8;
byte mask;
while( i > 0 ){
mask = 0x01 << ( i - 1 );
digitalWrite( clock, LOW );
if( data & mask ){
digitalWrite( dataIn, HIGH );
}else{
digitalWrite( dataIn, LOW );
}
digitalWrite( clock, HIGH );
--i;
}
}
void maxAll( byte reg, byte col ){
int c = 0;
digitalWrite( load, LOW );
for( c = 1; c <= 4; c++ ){
putByte( reg );
putByte( col );
}
digitalWrite( load, LOW );
digitalWrite( load, HIGH );
}
void setup(){
pinMode( dataIn, OUTPUT );
pinMode( clock, OUTPUT );
pinMode( load, OUTPUT );
digitalWrite( 13, HIGH );
maxAll( 0x0b, 0x07 );
maxAll( 0x09, 0x00 );
maxAll( 0x0c, 0x01 );
maxAll( 0x0f, 0x00 );
for( e = 1; e <= 8; e++ ){
maxAll( e, 0 );
}
maxAll( 0x0a, 0x0f & 0x0f );
}
void loop(){
maxAll( 1,0 );
maxAll( 2,0 );
maxAll( 3,0 );
maxAll( 4,0 );
maxAll( 5,0 );
maxAll( 6,0 );
maxAll( 7,0 );
maxAll( 8,0 );
delay( 500 );
maxAll( 1,1 );
maxAll( 2,1 );
maxAll( 3,1 );
maxAll( 4,1 );
maxAll( 5,1 );
maxAll( 6,1 );
maxAll( 7,1 );
maxAll( 8,1 );
delay( 500 );
maxAll( 1,2 );
maxAll( 2,2 );
maxAll( 3,2 );
maxAll( 4,2 );
maxAll( 5,2 );
maxAll( 6,2 );
maxAll( 7,2 );
maxAll( 8,2 );
delay( 500 );
maxAll( 1,4 );
maxAll( 2,4 );
maxAll( 3,4 );
maxAll( 4,4 );
maxAll( 5,4 );
maxAll( 6,4 );
maxAll( 7,4 );
maxAll( 8,4 );
delay( 500 );
maxAll( 1,8 );
maxAll( 2,8 );
maxAll( 3,8 );
maxAll( 4,8 );
maxAll( 5,8 );
maxAll( 6,8 );
maxAll( 7,8 );
maxAll( 8,8 );
delay( 500 );
maxAll( 1,16 );
maxAll( 2,16 );
maxAll( 3,16 );
maxAll( 4,16 );
maxAll( 5,16 );
maxAll( 6,16 );
maxAll( 7,16 );
maxAll( 8,16 );
delay( 500 );
maxAll( 1,32 );
maxAll( 2,32 );
maxAll( 3,32 );
maxAll( 4,32 );
maxAll( 5,32 );
maxAll( 6,32 );
maxAll( 7,32 );
maxAll( 8,32 );
delay( 500 );
maxAll( 1,64 );
maxAll( 2,64 );
maxAll( 3,64 );
maxAll( 4,64 );
maxAll( 5,64 );
maxAll( 6,64 );
maxAll( 7,64 );
maxAll( 8,64 );
delay( 500 );
maxAll( 1,128 );
maxAll( 2,128 );
maxAll( 3,128 );
maxAll( 4,128 );
maxAll( 5,128 );
maxAll( 6,128 );
maxAll( 7,128 );
maxAll( 8,128 );
delay( 500 );
}
ソースでは、
maxAll( 行, 0 ); → 消灯
maxAll( 行, 1 ); → 1列目点灯
maxAll( 行, 2 ); → 2列目点灯
maxAll( 行, 4 ); → 3列目点灯
となっています。
パターンが、1,2,3,4,…ではなく、1,2,4,8,…となるのはなぜでしょう。
実は、
maxAll(行,3);
にすると、1列目と2列目が付きます。(1+2=3)
maxAllの2番目のパラメータは、光の付き具合を2進数で表しています。
例えば…
□ ■ □ ■ ■ □ ■ □
と光らせたいなら(黒が光っているところ)、二進数で01011010、これを10進数に直すと90になるので、
maxAll( 行, 90 );
としているのと同じです。
ミニ電光掲示板編(2)へ続きます。