マイコンArduinoを使って電光掲示板を作る。
続き
今回はLEDモジュールを点灯させて行きます。
先ずは全点灯
200円のジャンクパーツでも十分綺麗です。
プログラムはこんな感じ
void setup() {
// put your setup code here, to run once:
pinMode(3,OUTPUT); // デジタルピンのD3を出力に設定する
pinMode(4,OUTPUT); // デジタルピンのD4を出力に設定する
pinMode(5,OUTPUT); // デジタルピンのD5を出力に設定する
pinMode(6,OUTPUT); // デジタルピンのD6を出力に設定する
pinMode(7,OUTPUT); // デジタルピンのD7を出力に設定する
pinMode(8,OUTPUT); // デジタルピンのD8を出力に設定する
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(3,HIGH); // コモン
digitalWrite(4,HIGH); // カラムA
digitalWrite(5,HIGH); // カラムB
clock();
digitalWrite(7,HIGH); // ラッチ
digitalWrite(8,LOW); // イネーブル
}
void clock() {
digitalWrite(6,HIGH); // クロック
digitalWrite(6,LOW); // クロック
}
setup()で初期設定
loop()の中はコモン、カラムA、カラムBをHにセットしてクロックで送っています。
クロックはclock()と言う関数を作りました。
ラッチで反映、イネーブルで表示ONで点灯
loop()の中で繰り返し実行されるので画像の通り全点灯
次は個別に点灯させます
プログラム
void setup() {
// put your setup code here, to run once:
pinMode(3,OUTPUT); // デジタルピンのD3を出力に設定する
pinMode(4,OUTPUT); // デジタルピンのD4を出力に設定する
pinMode(5,OUTPUT); // デジタルピンのD5を出力に設定する
pinMode(6,OUTPUT); // デジタルピンのD6を出力に設定する
pinMode(7,OUTPUT); // デジタルピンのD7を出力に設定する
pinMode(8,OUTPUT); // デジタルピンのD8を出力に設定する
// クリア
digitalWrite(3,LOW); // コモン
digitalWrite(4,LOW); // カラムA
digitalWrite(5,LOW); // カラムB
clock();clock();clock();clock();clock();clock();clock();clock();
clock();clock();clock();clock();clock();clock();clock();clock();
digitalWrite(7,HIGH); // ラッチ
digitalWrite(7,LOW); // ラッチ
// 右上の1点だけ点灯
digitalWrite(3,HIGH); // コモン
digitalWrite(4,HIGH); // カラムA
digitalWrite(5,HIGH); // カラムB
clock();
digitalWrite(7,HIGH); // ラッチ
digitalWrite(8,LOW); // イネーブル
}
void loop() {
// put your main code here, to run repeatedly:
}
void clock() {
digitalWrite(6,HIGH); // クロック
digitalWrite(6,LOW); // クロック
}
今回は動きが分かり易いように1回だけ実行するようにsetup()の中に書いています。
初期設定をしてクリアしています。
クリアは信号をLにしてクロックを16回送ってデータを消しています。
その後信号をHにしてクロックを1回送っています。
ラッチで反映、イネーブルで表示ONで点灯
次は個別に点灯させます(位置の移動)
プログラム
void setup() {
// put your setup code here, to run once:
pinMode(3,OUTPUT); // デジタルピンのD3を出力に設定する
pinMode(4,OUTPUT); // デジタルピンのD4を出力に設定する
pinMode(5,OUTPUT); // デジタルピンのD5を出力に設定する
pinMode(6,OUTPUT); // デジタルピンのD6を出力に設定する
pinMode(7,OUTPUT); // デジタルピンのD7を出力に設定する
pinMode(8,OUTPUT); // デジタルピンのD8を出力に設定する
// クリア
digitalWrite(3,LOW); // コモン
digitalWrite(4,LOW); // カラムA
digitalWrite(5,LOW); // カラムB
clock();clock();clock();clock();clock();clock();clock();clock();
clock();clock();clock();clock();clock();clock();clock();clock();
digitalWrite(7,HIGH); // ラッチ
digitalWrite(7,LOW); // ラッチ
// 右上の1点だけ点灯
digitalWrite(3,HIGH); // コモン
digitalWrite(4,HIGH); // カラムA
digitalWrite(5,HIGH); // カラムB
clock();
// 左下へ移動
digitalWrite(3,LOW); // コモン
digitalWrite(4,LOW); // カラムA
digitalWrite(5,LOW); // カラムB
clock();clock();clock();clock();clock();clock();clock();
digitalWrite(7,HIGH); // ラッチ
digitalWrite(8,LOW); // イネーブル
}
void loop() {
// put your main code here, to run repeatedly:
}
void clock() {
digitalWrite(6,HIGH); // クロック
digitalWrite(6,LOW); // クロック
}
右上点灯とほぼ同じですが左下へ移動の所でLにしてクロックを7回送ってます。
なんか感じが掴めたのでは無いでしょうか?
データのセット、クロックの入れ方でどのように表示されるか色々試して下さい。
次回はloop()の中で実行して行きたいと思います。
では、また。