マイコンArduinoを使って電光掲示板を作る。
続き
前回のプログラムを少しずつ変更して変化を見て行きます。
前回のプログラム
void setup() {
// put your setup code here, to run once:
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(2,HIGH); // データをセット
for (int i = 0;i < 16;i++) {
digitalWrite(4,HIGH); // クロック
digitalWrite(4,LOW); // クロック
}
digitalWrite(5,HIGH); // ラッチ
digitalWrite(5,LOW); // ラッチ
}
これで全点灯しました。
この中のvoid loop()に手を加えてみます。
digitalWrite(2,HIGH); // データをセット
for (int i = 0;i < 16;i++) {
digitalWrite(4,HIGH); // クロック
digitalWrite(4,LOW); // クロック
}
から
for (int i = 0;i < 16;i++) {
digitalWrite(2,LOW); // データをセット
if (i == 5)
digitalWrite(2,HIGH); // データをセット
digitalWrite(4,HIGH); // クロック
digitalWrite(4,LOW); // クロック
}
iが5の時だけHIGHをセット
すると6列目のみ点灯します。5を他の数字に変えてみると数字に応じて列が変わります。列の制御は出来てるみたいです。
次は段の方を見て行きます。
int num = 0;
void setup() {
// put your setup code here, to run once:
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
}
void loop() {
// put your main code here, to run repeatedly:
for (int i = 0;i < 16;i++) {
digitalWrite(2,LOW); // データをセット
if (num == 5)
digitalWrite(2,HIGH); // データをセット
digitalWrite(4,HIGH); // クロック
digitalWrite(4,LOW); // クロック
}
digitalWrite(5,HIGH); // ラッチ
digitalWrite(5,LOW); // ラッチ
num++;
if (num > 15)
num = 0;
}
numが5の時だけHIGHをセット
今度は6段目のみ点灯します。5を他の数字に変えてみると数字に応じて段が変わります。段の制御は出来てるみたいです。
更に手を加えて
if (num == 5) → if (num == 5 && i == 5)
で任意の1点のみ点灯出来ます。
推測ですが、ここから見えてくるのは16回クロック信号を受け取ると自動で点灯ラインが順次変化するのではないでしょうか。
縦横が制御できていると言う事はこのまま文字の表示も可能な様な
ただ、一つ疑問に思うのは他の2本は何に使われているのかな?
次回は文字の表示に挑戦していきます。
では、また。