今回はArduinoを用いて7セグLEDの使い方について説明します。7セグはディスプレイではありませんが0~9の数字をLEDを点灯させて表示します。今回のプログラムの内容はカウントダウンです。それではやっていきましょう!
使用するもの
使用するものは下記のリストの物です。購入先は秋月電子通商とAmazonです。同じもの購入したい方はリストのリンクより購入してください。
- Arduino Uno Rev3
- USBケーブル USB2.0 AオスーBオス 1.5m AーB
- 7セグメント
- カーボン抵抗(炭素被膜抵抗) 1/2W150Ω
- カーボン抵抗(炭素被膜抵抗) 1/2W10Ω
- ブレッドボード・ジャンパーワイヤー (オス―メス) セット
- ブレッドボード
7セグメントの仕組み
端子について
7セグメントの端子は合計で10本の端子があります。今回使用するのはコモンカソードという7セグメントのため以下のような配線になっています。
7セグメントは、8個のLEDのHIGH、LOWの操作で各数字を表示していきます。上下の真ん中の端子(3、8)はGNDの役割をしています。その他の端子はそれぞれ一つのLEDの+側になっています。

抵抗の計算
今回使用する7セグメントの抵抗の計算を行います。
抵抗の計算をするには購入した7セグメントのデータシートを用いる必要があります。データシートには、7セグメントのLEDの定格電圧や定格電流などLEDを使用するための様々な情報が記載されています。今回購入先はAmazonで購入したためデータシートがなく正確な値を求められませんが、秋月電子通商で販売されている7セグメントを参考にしてみました。
使用する値は下記のものです。
- 電源電圧[V]
- 順法呼応電圧降下[V]
- 順方向電流[A]
この3つのあ値から使用する抵抗値を求めます。
一つずつ用語を説明していきます。
【電源電圧】
その名の通り電源の電圧です。今回はArduinoから出力される5Vです。
【順方向電圧】
LEDにかかる電圧のこと意味します。記号では”VF”と表します。この値は、LEDのデータシートを見ていただくとVFの最小値(Min)から最大値(Max)、代表値(Typ.)が記載されているので、今回は、代表値(Typ.)より1.8Vとします。
【順方向電流】
LEDに流したい電流のことを意味します。記号では”IF”と表します。この値も同様にデータシートを見ていただくとIFの値が記載されています。今回は、20mA(0.02A)とします。
上記の値より計算をします。計算式は下記の通りです。
(電源電圧[V]ー順方向電圧[V])/順方向電流[A]
上記の式に代入すると今回使用する抵抗値は、
(5ー1.8)/0.02=160
となります。今回は160Ωとします。
7セグの点灯
回路
回路は以下のように作成します。配線が複雑ですが間違えないよ注意してください。使用しているピンはD2~D9とGNDです。7セグメントの端子と接続しているArduinoの端子は下記の表で確認してください。

Arduino | 7セグメント | LED |
---|---|---|
D2 | 1 | E |
D3 | 2 | D |
GND | 3 | GND |
D4 | 4 | C |
D5 | 5 | DP |
D6 | 6 | B |
D7 | 7 | A |
GND | 8 | GND |
D8 | 9 | F |
D9 | 10 | G |
プログラム
プログラムは以下の通りです。ArduinoIDEにコピペして使用してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | boolean Num_Array[10][8] = {{1,1,1,1,1,1,1,0},{0,0,1,1,1,0,0,0},{1,1,0,1,1,1,0,1},{0,1,1,1,1,1,0,1},{0,0,1,1,1,0,1,1},{0,1,1,1,0,1,1,1},{1,1,1,1,0,1,1,1},{0,0,1,1,1,1,0,0},{1,1,1,1,1,1,1,1},{0,1,1,1,1,1,1,1}}; void setup() { for(int i = 2; i <= 9; i++){ pinMode(i, OUTPUT); } } void LightNumber(int number){ for (int t = 0; t <= 7; t++){ digitalWrite(t + 2, Num_Array[number][t]); } } void loop() { for(int counter = 0; counter <= 9; counter++){ LightNumber(counter); delay(1000); } } |
プログラムについて説明します。boolean Num_Array[10][8]は、10通りの点灯方法があり、点灯させることができるLEDは合計で8個あるので8個の要素を持った配列を10個宣言しています。8個の配列の要素は使用するデジタルピンの番号である{2,3,4,5,6,7,8,9}です。1はHIGHでその端子を点灯させ、0はLOWでその端子を消灯です。今回のプログラムでは、左から順に0,1,2,3,4,5,6,7,8,9と点灯するように配列を宣言しています。各数字の表示方法は下記の表を参考にしてください。


setup文では、使用するデジタルピンをfor文を用いて全てをOUTPUTに設定しています。D2~D9までのデジタルピンを使用するので、for文は、iの値が9以下になるまで繰り返すという意味です。また、iの初期値は2で、繰り返されるたびに+1しています。
void LightNumber(int number)という独自関数の中身について説明します。この関数は、指定した数字(0~9)を表示します。digitalWriteの「t+2」は、tに0から繰り返すたびに「+1」ずつ加算されD2~D9までの端子のHIGHかLOWを設定します。Num_Array[number][t]の「number」は表示したい数字が入ります。この配列は0~9の順に表示できるようにしているので、指定すれば指定した数字を表示させるための8個の要素の入った配列が指定されます。「t」には先ほど述べたように0~7に順に値が入ります。8個の要素を指定するために代入していますが、なぜ0からと思う方もいると思います。配列は、0、1、2、3……と数えるので0から代入します。
loop文では0~9の数字が1秒毎に表示させます。delayは単位がミリ秒なので1000を入れています。
最後に
説明した文章の中でわからない言葉があった際は、問い合わせ又はSNSでの連絡してください。
今回の記事を読んで気になった方は下記よりSNSのフォローをよろしくお願いいたします。また、YouTubeにも様々な動画を載せているのでご覧ください!

鳩ラボ

最新記事 by 鳩ラボ (全て見る)
- 1桁7セグLEDを使って2桁表示してみよう ~Arduino~ - 09/13/2020
- ラズパイをリモートで操作!! 〜VNC接続をしてみよう〜 - 08/30/2020
- ミニバイクでサーキットを走る!!(マシン準備編) - 07/08/2020
- ラズパイOSについて - 07/06/2020
- LINE Botを作った話【GAS×LINEMessagingAPI】 - 07/05/2020
コメント
10kΩ?
茶・黒・黒で??
リンク先も10Ωなんですけど・・