マイコンArduinoを使って電光掲示板を作る。
続き
今回は、文字の表示に挑戦していきます。
が、その前に
コネクター5番ピン(pinMode(6,OUTPUT);)の制御信号が分かりました。
前回、自動で点灯ラインが順次変化していると書きましたが稀に段ずれが起こりズレたまま表示が続きます。試しに下記プログラムに書き換えたところ全くズレが起こらなくなりました。5番ピンが順送りのリセットをしている様です。
不明ピンは残り1つとなりました。
太字を追加
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 && i == 5)
digitalWrite(2,HIGH);
digitalWrite(4,HIGH);
digitalWrite(4,LOW);
}
digitalWrite(5,HIGH);
digitalWrite(5,LOW);
num++;
if (num > 15) {
num = 0;
digitalWrite(6,HIGH);
digitalWrite(6,LOW);
}
}
これで完璧に動作しています。
続いてメインの文字の表示に挑戦していきます。
と言っても何度も作っているので少し手を加えるだけでOKです。
横向き反転で良いならこんな感じ
short data_hex[] = {0x0000, 0x0200, 0x0200, 0x3ff8, 0x0200, 0x0220, 0x03f0, 0x0628,
0x1a44, 0x1244, 0x2284, 0x2304, 0x260c, 0x3d18, 0x0070, 0x0000,
0x0000, 0x0000, 0x0000, 0x2010, 0x2018, 0x2008, 0x200c, 0x2004,
0x3004, 0x3004, 0x1186, 0x1106, 0x1b00, 0x0e00, 0x0400, 0x0000};
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);
}
void loop() {
// put your main code here, to run repeatedly:
for (int i = 0;i < 16;i++) {
for (int j = 0;j < 16;j++) {
digitalWrite(2,LOW);
if ((data_hex[j] & 0x8000 >> i) != 0)
digitalWrite(2,HIGH);
digitalWrite(4,HIGH);
digitalWrite(4,LOW);
}
digitalWrite(5,HIGH);
digitalWrite(5,LOW);
}
digitalWrite(6,HIGH);
digitalWrite(6,LOW);
}
制御ピンが少ないので解ってしまえば楽勝かな。
今までで1番簡単に表示出来てしまう。
文字数1文字なので電光掲示板としては物足りない。
(OUTコネクターが有るのでモジュールが有れば繋ぐことは可能だと思います。)
そこで次回からはゲーム機を作って行きます。
では、また。