マイコンArduinoを使って電光掲示板を作る。
続き
今回はloop()の中で実行します。
1つ置きに点灯させました。
プログラム
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(4,HIGH); // カラムA
clock();
digitalWrite(4,LOW); // カラムA
digitalWrite(3,HIGH); // コモン
clock();
digitalWrite(3,LOW); // コモン
digitalWrite(4,HIGH); // カラムA
clock();
digitalWrite(4,LOW); // カラムA
digitalWrite(3,HIGH); // コモン
clock();
digitalWrite(3,LOW); // コモン
digitalWrite(4,HIGH); // カラムA
clock();
digitalWrite(4,LOW); // カラムA
digitalWrite(3,HIGH); // コモン
clock();
digitalWrite(3,LOW); // コモン
digitalWrite(4,HIGH); // カラムA
clock();
digitalWrite(4,LOW); // カラムA
digitalWrite(3,HIGH); // コモン
clock();
digitalWrite(3,LOW); // コモン
digitalWrite(4,HIGH); // カラムA
clock();
digitalWrite(4,LOW); // カラムA
digitalWrite(3,HIGH); // コモン
clock();
digitalWrite(3,LOW); // コモン
digitalWrite(4,HIGH); // カラムA
clock();
digitalWrite(4,LOW); // カラムA
digitalWrite(3,HIGH); // コモン
clock();
digitalWrite(3,LOW); // コモン
digitalWrite(4,HIGH); // カラムA
clock();
digitalWrite(4,LOW); // カラムA
digitalWrite(3,HIGH); // コモン
clock();
digitalWrite(3,LOW); // コモン
digitalWrite(4,HIGH); // カラムA
clock();
digitalWrite(4,LOW); // カラムA
digitalWrite(3,HIGH); // コモン
clock();
digitalWrite(3,LOW); // コモン
digitalWrite(7,HIGH); // ラッチ
digitalWrite(7,LOW); // ラッチ
digitalWrite(8,LOW); // イネーブル
}
void clock() {
digitalWrite(6,HIGH); // クロック
digitalWrite(6,LOW); // クロック
}
カラムAとコモンを1クロック置きにHをセットしているのでLEDも1つ置き、1行置きに点灯。
前回にもコメントしましたが、カラムとコモンが共通なので同時に書き込まなければならない。
次は動きの有るものを作ります。
プログラム
int num = 0;
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を出力に設定する
cls();
}
void loop() {
// put your main code here, to run repeatedly:
for (int i = 0;i < 16;i++) {
if (15 - i == num)
digitalWrite(3,HIGH); // コモン
else
digitalWrite(3,LOW); // コモン
digitalWrite(4,HIGH); // カラムA
digitalWrite(5,HIGH); // カラムB
clock();
}
digitalWrite(7,HIGH); // ラッチ
digitalWrite(8,LOW); // イネーブル
digitalWrite(7,LOW); // ラッチ
delay(100);
num++;
if(15 < num) {
num = 0;
}
}
void cls() {
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); // ラッチ
}
void clock() {
digitalWrite(6,HIGH); // クロック
digitalWrite(6,LOW); // クロック
}
変数 num 何回ループしたか
関数 cls() クリア
if分、for文も使い始めて一気にプログラムらしくなりました。
if (15 - i == num) → if (i == num) に書き換えると下から上に移動する
その他、いろいろ書き換えるとより理解が進みます。
次回は文字データを表示して行きます。
では、また。