Arduino Nano互換品で7セグメントLEDを使う その1

Arduino Nano互換品で7セグメントLEDを使う方法です。
数字を表示する機器は今はもっと高性能なものが色々ありますが、
7セグメントLEDを自分の思い通りに光らせてみると思ってたより感動がありましたので忘備録として残します。
今更説明するまでも無いですが、やることを簡単に説明するとLEDを7個×桁数光らせるだけです。

1.配線の準備

まずは、7セグのデータシートを入手します。
たぶん、型番で検索すれば出てきます。
私の場合、Broadcom社のHDSP-F201を使用しました。今回はこちらのデータシートを引用して説明します。

1枚目は各LEDに対する記号の説明です。今回はa~gを使用します。
2枚目はピン配置です。
3枚目は各LED記号がどのピンに該当するかの一覧表です。
これらの情報を元に、各7セグのa→d2、b→D3、c→D4、d→D5、e→D6、f→D7、f→D8、
1桁目のアノード→A0、2桁目のアノード→A1、3桁目のアノード→A2へ接続しました。
あと、各LEDには忘れずに抵抗を入れるようにしてください。
抵抗値はデータシートの順電圧(MAX2.2V)、順電流(20mA)、電源(5V)から計算しましょう。
(責任は持てませんが、だいたい300Ωぐらい使えば多分大丈夫かもしれません。)
小技ですが、アナログピンA0~A7はデジタルピンとしても使用できます。
7セグではピンをたくさん使用しますので、今後の拡張性も考慮して今回は活用します。

2.点灯確認
まずは下記のプログラムをArduinoに書き込んでみましょう。
—————————————————————
int a = 2; //7セグメントLEDのaピン
int b = 3; //7セグメントLEDのbピン
int c = 4; //7セグメントLEDのcピン
int d = 5; //7セグメントLEDのdピン
int e = 6; //7セグメントLEDのeピン
int f = 7; //7セグメントLEDのfピン
int g = 8; //7セグメントLEDのgピン

int seg1 = A0; //1桁目のANODE
int seg2 = A1; //2桁目のANODE
int seg3 = A2; //3桁目のANODE

int delaytime = 500;

bool Num_Array[10][7] = {
{0, 0, 0, 0, 0, 0, 1},
{1, 0, 0, 1, 1, 1, 1},
{0, 0, 1, 0, 0, 1, 0},
{0, 0, 0, 0, 1, 1, 0},
{1, 0, 0, 1, 1, 0, 0},
{0, 1, 0, 0, 1, 0, 0},
{0, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 1, 1, 0, 1},
{0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0},
};

void setup() {
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);

pinMode(seg1, OUTPUT);
pinMode(seg2, OUTPUT);
pinMode(seg3, OUTPUT);
}

//数字の表示
void LightNumber(int number) {
digitalWrite(a, Num_Array[number][0]);
digitalWrite(b, Num_Array[number][1]);
digitalWrite(c, Num_Array[number][2]);
digitalWrite(d, Num_Array[number][3]);
digitalWrite(e, Num_Array[number][4]);
digitalWrite(f, Num_Array[number][5]);
digitalWrite(g, Num_Array[number][6]);
}

void loop() {

digitalWrite(seg1, HIGH);
digitalWrite(seg2, HIGH);
digitalWrite(seg3, HIGH);

LightNumber(0);
delay(delaytime);

LightNumber(1);
delay(delaytime);

LightNumber(2);
delay(delaytime);

LightNumber(3);
delay(delaytime);

LightNumber(4);
delay(delaytime);

LightNumber(5);
delay(delaytime);

LightNumber(6);
delay(delaytime);

LightNumber(7);
delay(delaytime);

LightNumber(8);
delay(delaytime);

LightNumber(9);
delay(delaytime);
}
—————————————————————

これで0~9が順番に光ることを確認できたでしょうか?
ただ、これではすべての桁が同じ数字になってしまいますので、
各桁ごとに違う数字を表示する方法は別途説明します。

スポンサードリンク

電子工作

Posted by gonzy