0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Arduino Nanoでミニ電光掲示板(8×8マトリクスLED + MAX7219)を作る #6 ミニ電光掲示板編(1)

Last updated at Posted at 2017-12-27

1 ソフトウェア インストール編
2 電子パーツ購入編
3 (共通)準備編
4 基本編
5 フルカラーLED編
6 ミニ電光掲示板編(1)
7 ミニ電光掲示板編(2)


いよいよ、ミニ電光掲示板編です。

実は、配線に関しては「基本編」や「フルカラーLED編」よりずっと簡単です。

まず、(共通)準備編、基本編、フルカラーLED編で、PC と Arduino が USBケーブルで繋がっている場合は、USBケーブルを抜いてください。
以降、ブレッドボードにパーツを抜き差しする時は必ず USBケーブルを抜いてください。
ケーブルを指したまま(電源が入ったまま)ブレッドボードのパーツを抜き差しすると、電子パーツが破損します。

基本編やフルカラーLED編で、LED や CDS を繋いでいる方は、(共通)準備編の状態へ戻してください。

image.png

マトリクスLED(MAX7219)とブレッドボードを接続します。

VCC → ブレッドボードの「+」
GND → ブレッドボードの「-」
DIN → Arduino Nano の D2 ピン
CS → Arduino Nano の D3 ピン
CLK → Arduino Nano の D4 ピン

image.png

image.png

マトリクス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 );
}

左から右へ縦線が動くはずです。
image.png

ソースでは、

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)へ続きます。


次へ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?