今回の記事はこの記事と次回のモノの2回に渡っての内容となっています;)
次回のリンクは今回の下のほうに貼っておきますね
この前秋月でドットマトリクスLEDを買いました。
8×8に発光ダイオードが配置してあります。
電光掲示板的な感じで字を表示させたり簡単なドットでマークを表示させて使うってイメージがあります。僕も使ってみたい。
あ、今回は「好きなマスのLEDを点灯させる術を知る」と言うのを目的にします。
形が整った何かを作るのは次回に回します(記事数稼げるし短いほうが読みやすいでしょ?)
とりあえずブレッドボードに挿してみます
気づかれましたか? 幅がピン同士の幅が広いので僕の手持ちのブレッドボードひとつでは扱いにくいんですよね。もう一つブレッドボードを用意してまたぐ形で挿すか大きいサイズのブレッドボードを用意する必要があります。(2,3個予備のがあったと思うのですが僕は失くしてしまっていて...失くすたびに買い足しているので、部屋探したらごろごろ出てきそうでこわいです)
簡単に変換基板をつくります。
変換基板と言ってもユニバーサル基板にピンソケットを実装してリード線でブレッドボード上の狭い範囲でも扱えるようにするだけです。
手ごろなサイズの基板があったのでこれを使います。両面基板ってお高いイメージです。
とりあえずこんな感じですかね...ジャンプワイヤを半田付けするって邪道でしょうか...?
(ドットマトリクスLEDは8列端子の部品ですが9列のピンソケットを記事内では使用しています。これは8列のソケットが手元になかったためです。)
ドットマトリクスLEDを挿すとこんな感じです。ぼやけてしまっていますがそのままボードに挿していた時とちがい一つのボードで使いやすくなっているのがわかると思います。
データシートを見ていきます
前に書いたジョイスティックの記事で「中国語はわからない」と書きましたね。あれは嘘だ。今回のデータシートは英語なんですけどそれでもわかりにくかったです。
回路図を見るとどうやらピン同士の出力とGNDの切り替えで点滅を制御するみたいです(この言い方で合ってます?)
なんとなくはわかったのでアルカリ電池をぽこぽこ抜き差しして調べました(データシート読めればこんな苦労はいらないはずです)
昔、懸賞つきの雑誌のパズルでこんなのありましたよね。数字を元にマスを埋めて絵柄を完成させるやつ。
わかったこと
紙への手書き資料で申し訳ないです。上のマスがマトリクスLEDの点灯部分の解説、下がピンの数字の説明です。
光る面を上にして端子部分を下、そして型番である"KEM-12288BW"と書かれている側面を左側にして見た場合の端子です。
説明に移っていきます。マスの一つ一つに数字が書かれていますよね、ピンの番号をあらわしています。例えば最上段右端の「9.13」というのは9ピンを出力、10ピンをGNDにすることで点灯すると言う意味です。
わかりにくい言い方かもです。まとめると5,2,7,1,12,8,14,9ピンは出力ピンで残りの13,3,4,10,6,11,15,16ピンがGND用のピンとなっています。
アルディーノにつなぎ好きなマスのLEDを点灯させてみます。
今回の目的である「好きなマスを光らせる」ということに挑戦します。
今回使うマトリクスLEDの端子数は16ピン、対して僕がつかうアルディーノ(中華製のUNO互換機ですが)のデジタルピンは13ピンしかありません。これに対してはアナログピンのA0ピンからA5ピンまでを使うという形で今回は対処します。
ジャンプワイヤがぐちゃぐちゃでスパゲッティ状態です。回路図の表記は勘弁してください。
マトリクスLEDとアルディーノとのつなぎ方は
5=A0 2=A1 7=A2 1=A3
12=A4 8=A5 14=13 9=12
13=11 3=10 4=9 10=8
6=7 11=6 15=5 16=4 (LEDピン=アルディーノピンの並びです)
のようにしました。今回は真ん中より少し下め、左よりの手書き図で言うところの
「7,6」のマスを光らせてみます。マトリクスLEDの7ピンに接続したアルディーノ側のA2ピンを出力させ6ピンに接続したデジタル7ピンをGNDに設定すればいいわけですね。
スケッチおよび解説
今回のスケッチです。
void setup() {
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
pinMode(A4,OUTPUT);
pinMode(A5,OUTPUT);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
digitalWrite(A0,LOW);
digitalWrite(A1,LOW);
digitalWrite(A2,LOW);
digitalWrite(A3,LOW);
digitalWrite(A4,LOW);
digitalWrite(A5,LOW);
// put your setup code here, to run once:
}
void loop() {
digitalWrite(A2,HIGH);
digitalWrite(7,LOW);
// put your main code here, to run repeatedly:
}
最初のsetup部分でマトリクスLEDで言う5ピンを初めとした8個のピンにLOWを宣言し13ピンを初めとしたGND用の残りのピンにHIGHを宣言してマトリクスLEDの初期化を行っています。その後loop部分でアルディーノピンのA2を出力に、デジタル7ピンをGNDに設定することで...
ちゃんと左から3列目、上から5列目のLEDだけを点灯させることに成功しました!
それにしても配線ぐちゃぐちゃですね...変換基板作ったんならブレッドボードも介さずにマイコンにそのままつないでもよかったかもしれません。
まとめ
注意する必要があると感じたのはマトリクスLED側のピンのアノード・カソードがわかりやすく配列されていないと言う点です。電子部品ってこんなもん...?
とりあえず使い方がわかったのと今回の目的である「好きなマスを光らせる」と言うことが達成できたのが満足です。次回もマトリクスLEDのことについて書こうと思います。使い方を発展...とまでは行きませんがなにかわかりやすいマークでも表示させようかな....読んでくださりありがとうございました;)
次回記事です、読んでくれるとうれしいです。
[ この記事はブログ投稿者の憶測や考えによりつくられています。
よって書いてある内容に誤りや言い間違いがあるかもしれません。もし修正したほうがいい場所や「こういった言い方のほうが”ソレっぽい”よ」などがありましたら後に記載してありますリンク先のツイッターアカウントに教えてくださると嬉しいです:) ]