※本記事にはプロモーション(広告)が含まれています。
7セグメントLED(7セグ)は、a〜g の7本の棒と小数点 dp に LED が入った表示器で、1本ごとに抵抗を入れて点けます(5V・赤なら 300Ω で約10mA)。4桁はダイナミック点灯で12本の線で光らせ、しくみはダイナミック点灯の節、抵抗と電流は早見表へ。
時計やタイマー、温度計の数字の表示でおなじみの 7セグメントLED。部品は安く手に入りますが、ピンの数が多く、つなぎ方を1つまちがえると1つも点きません。
この記事では、秋月電子などで手に入る4桁の表示器 OSL40562 を例に、名前の覚え方から、4桁を少ない線で光らせるしくみまでを、データシートの数字で順番に見ていきます。

この記事で作るもの:4桁の 7セグを12本の線で光らせる回路
Arduino Uno(5V)の12本の端子で、4桁の 7セグメントLED(OSL40562-LR)に「12.34」のような数字を出す回路です。部品は表示器・抵抗 220Ω×8・トランジスタ 2N3904×4・抵抗 390Ω×4 です。
マイコンの端子のうち8本(D2〜D9)で「どんな形にするか」、残りの4本(D10〜D13)で「どの桁を光らせるか」を選びます。
| 部品 | この記事の例 | 役目 |
|---|---|---|
| 7セグメントLED | OSL40562-LR(4桁・赤) | 数字を表示する。カソードコモン |
| 抵抗 | 220Ω×8 | セグメントごとに電流を決める |
| トランジスタ | 2N3904×4 | 桁の共通の足の大きな電流を受ける |
| 抵抗 | 390Ω×4 | トランジスタのベースの電流を決める |
1桁の表示器を4つ、別々の線で点けると、マイコンの端子が 32本 も要ります。ダイナミック点灯なら 12本で済みます。
LED を何個も点けるときの直列・並列と、ドライバ IC の選び方
つまり、「形」を8本、「桁」を4本で選び、桁を順番に切り替えるのがこの記事の回路です。

セグメントの名前:a〜g と dp の覚え方
いちばん上が a で、そこから時計回りに b・c・d・e・f、まん中の横棒が g、右下の小数点が dp です。どのメーカーの 7セグでも、この名前は同じように使われます。
7セグメントLEDの「セグメント」は、数字を作る光る棒のことです。1本1本の中に LED が入っていて、1本ずつ別々に光らせられます。
名前は、いちばん上の横棒を a として、右上の縦棒 b、右下の縦棒 c、いちばん下の横棒 d、左下の縦棒 e、左上の縦棒 f と、時計回りにつけます。最後にまん中の横棒が g、右下の小さな点が dp(小数点)です。
つまり、「上から時計回りに a〜f、まん中が g、点が dp」と覚えれば、データシートのピン表が読めます。

数字ごとに点けるセグメント:0〜9 の形の表
「8」は a〜g の7本ぜんぶ、「1」は b と c の2本だけです。表示したい数字ごとに、どのセグメントを点けるかを表にしておき、マイコンのプログラムで使います。
| 数字 | 点けるセグメント | 本数 |
|---|---|---|
| 0 | abcdef | 6本 |
| 1 | bc | 2本 |
| 2 | abdeg | 5本 |
| 3 | abcdg | 5本 |
| 4 | bcfg | 4本 |
| 5 | acdfg | 5本 |
| 6 | acdefg | 6本 |
| 7 | abc | 3本 |
| 8 | abcdefg | 7本 |
| 9 | abcdfg | 6本 |
たとえば「2」は a・b・g・e・d の5本です。上の a から右上の b へ、まん中の g を通って左下の e、下の d と、数字の「2」を書く順番でたどると覚えやすくなります。
点ける本数は数字によって 2〜7本と変わります。あとで出てくる「抵抗の入れ方」で、この本数の違いが大事になります。
つまり、数字は「どのセグメントを点けるか」の組み合わせです。表を1つ作れば、どの数字も出せます。

カソードコモンとアノードコモン:中の LED の向きが逆
カソードコモンは、全部の LED の −側(カソード)が1本にまとまった形で、共通の足を GND 側へつなぎ、セグメントの足を High にすると点きます。アノードコモンはその逆で、共通の足を +側へつなぎ、セグメントの足を Low にすると点きます。
7セグメントLEDの中には、セグメントの数だけ LED が入っています。LED には向きがあり、+側をアノード、−側をカソードと呼びます。
8個の LED の片側を中で1本にまとめて、ピンの数を減らしています。まとめた側が −側なら「カソードコモン(カソード共通)」、+側なら「アノードコモン(アノード共通)」です。
| カソードコモン | アノードコモン | |
|---|---|---|
| 共通の足のつなぎ先 | GND(0V)側 | +5V 側 |
| 点けるときのセグメントの足 | High(5V) | Low(0V) |
| OSL40562 の例 | OSL40562-LR | OSL40562-IR |
回路はどちらでも作れますが、つなぎ方と、プログラムの High・Low が逆になります。この記事は、マイコンの High で点くので考えやすいカソードコモン(OSL40562-LR)で進めます。
つまり、まず「共通の足が −側か +側か」を確かめてから、回路を考えます。

どっちのコモン?見分け方は2つ
1つ目はデータシートの1ページ目にある「Common Cathode」「Common Anode」の文字、2つ目はテスターのダイオードレンジ(ダイオードの向きを調べるモード)です。
① 型番とデータシートで確かめる
OSL40562-LR のデータシートの1ページ目には「Common Cathode type」と書かれています。OSL40562 のなかまは、秋月電子の一覧で「-L□」がカソードコモン、「-I□」がアノードコモンです。
データシートを読む順番と、min・typ・max の見方
② テスターのダイオードレンジで確かめる
テスターの赤い棒が+、黒い棒が−です。共通の足とセグメントの足に棒を当てて、電流が流れる向きを調べます。
つまり、データシートで確かめ、手元の部品はテスターでもう一度確かめると安心です。

1桁を点ける:セグメントごとに抵抗を1本入れる
5V のマイコンで赤のセグメントに10mA 流すなら、R=(5V−2.0V)÷0.010A=300Ω です。抵抗はセグメントごとに1本ずつ、8本入れます。
1桁だけなら、ふつうの LED と同じ考え方です。マイコンの端子 → 抵抗 → セグメント → 共通の足 → GND と電流が流れます。
VF の 2.0V は、OSL40562-LR のデータシートの代表の値(20mA のとき)です。ばらつきの小さい側 1.8V の個体でも、電流は 10.7mA で、最大定格の 20mA より十分小さくなります。抵抗で消える電力は 30mW なので、ふつうの 1/4W(250mW)の抵抗で足ります。
LED の抵抗を3ステップで計算。何Ω・何Wかの早見表つき
つまり、7セグは「LED が8個入った部品」と考え、1個ずつに抵抗を入れます。

OSL40562 のピン配置:12本の足の役目
OSL40562 の足は12本で、セグメントが8本(a〜g・dp)、桁の共通が4本(桁1〜桁4)です。正面から見て、下の列が左から 1〜6番、上の列が右から 7〜12番です。
| ピン | 役目 | ピン | 役目 |
|---|---|---|---|
| 1 | e | 7 | b |
| 2 | d | 8 | 桁3 |
| 3 | dp | 9 | 桁2 |
| 4 | c | 10 | f |
| 5 | g | 11 | a |
| 6 | 桁4 | 12 | 桁1 |
4桁の表示器では、同じ名前のセグメント(たとえば4つの桁の a)が、中で1本の足(11番)にまとめられています。だから、セグメントの足は8本で足ります。そのかわり、桁ごとに共通の足(12・9・8・6番)が分かれています。
「どのセグメントの足を High にするか」で形が決まり、「どの桁の共通の足を GND につなぐか」で光る桁が決まります。
つまり、12本の足は「形の8本」と「桁の4本」に分けて考えると、配線を迷いません。

ダイナミック点灯のしくみ:1桁ずつ順番に、速く切り替える
4つの桁を同時には光らせず、桁1→桁2→桁3→桁4 と1桁ずつ順番に 2.5ms ずつ光らせます。4桁で 10ms、1秒に 100回まわるので、目には4桁が同時に点いているように見えます。
4桁の表示器では、セグメントの足が4桁で共通です。もし4つの桁を同時に ON にすると、4桁とも同じ形になってしまいます。
そこで、ある瞬間には1つの桁だけを ON にします。桁1を ON にしている間は、セグメントの足を「1」の形に。次に桁2に切り替えたら「2」の形に。これを速くくり返します。
つまり、ダイナミック点灯は「1桁ずつ・順番に・速く」の3つで、少ない線で全部の桁を光らせる方法です。

ちらつかない速さ:1秒に100回以上を目安に
4桁なら1桁 2.5ms(1周 10ms・1秒に 100回)を目安にします。1桁 5ms(1秒に50回)ではちらつきが見えることがあり、10ms 以上ではっきりちらつきます。
1桁を光らせる時間を長くすると、1周にかかる時間が長くなり、1秒にまわる回数が減ります。回数が少ないと、目に「点いたり消えたり」が見えてしまいます。
| 1桁の時間 | 1周(4桁) | 1秒あたり | 見え方(目安) |
|---|---|---|---|
| 1ms | 4ms | 250回 | ちらつかない |
| 2.5ms | 10ms | 100回 | ちらつかない |
| 5ms | 20ms | 50回 | 見えることも |
| 10ms | 40ms | 25回 | ちらつく |
| 25ms | 100ms | 10回 | ちらつく |
見え方は、人や表示の明るさ、目を動かすかどうかで変わります。この記事は「1秒に100回以上」を目安にしました。桁が8桁に増えたら、1桁の時間を 1.25ms 以下にすると、同じ100回を保てます。
つまり、桁の数が増えるほど、1桁の時間を短くします。

回路図:セグメントに抵抗、桁にトランジスタ
セグメントの8本は、マイコンの D2〜D9 から 220Ω を通して表示器へ。桁の4本は、表示器の共通の足からトランジスタ 2N3904 のコレクタへつなぎ、エミッタを GND、ベースを 390Ω を通して D10〜D13 へつなぎます。
桁を ON にするときは、その桁のトランジスタのベースに High を出します。トランジスタが ON になり、桁の共通の足が GND につながって、その桁だけが光ります。
セグメントの足は、点けたいものを High、消したいものを Low にします。カソードコモンなので、High にしたセグメントだけに電流が流れます。
1桁を静的に点けたときは 300Ω でしたが、ここでは 220Ω にしています。ダイナミック点灯では1桁が光っている時間が4分の1なので、光っている間の電流を少し多めにして、明るさを補うためです(次の節で計算します)。
つまり、マイコンの端子は「形」と「桁を選ぶ合図」を出すだけで、桁の大きな電流はトランジスタが受けます。

計算:セグメントの電流と、桁に集まる電流
セグメント1本は 12.7mA、平均ではその4分の1の約3.2mA です。桁の共通の足には、8本が全部点くと最大 109mA が集まるので、マイコンの端子(1本 40mA まで)では受けられません。
マイコンの側も確かめます。セグメントの8本が全部 High のとき、端子から出る電流の合計は最大 109mA です。ATmega328P のデータシートは、端子のまとまりごとに出す電流の合計を 150mA 以下にするよう書いているので、この範囲に入っています。
ベース抵抗を「Ib=Ic÷hFE×3」の3ステップで決める方法
つまり、セグメントは抵抗で、桁はトランジスタで、それぞれの電流をマイコンの許す範囲に収めます。

ブレッドボードへの置き方:溝をまたいで差す
表示器は、まん中の溝をまたぐように差します。上の列の足(7〜12番)を d の段、下の列の足(1〜6番)を h の段に入れると、上下の足がつながらずに別々の列に入ります。
ブレッドボードは、縦に5つ並んだ穴(a〜e、f〜j)が中でつながっています。OSL40562 の上下の足の間は 15.24mm(穴6つ分)なので、d の段と h の段に入れると、溝の両側にきちんと分かれます。
本体は足の列より少し大きいので、本体の下に隠れた穴は使えません。配線は、あいている a〜c の段と i〜j の段の穴から取ります。
ブレッドボード→ユニバーサル基板→プリント基板と進める、試作の手順
つまり、表示器は「溝をまたいで d と h の段」に差し、配線はあいている穴から取ります。

配線表:Arduino の12本の端子をどこへつなぐか
D2〜D9 は 220Ω を通して表示器の 11・7・4・2・1・10・5・3番(a〜dp)へ。D10〜D13 は 390Ω を通してトランジスタのベースへ、コレクタを表示器の 12・9・8・6番(桁1〜桁4)へつなぎます。
| Arduino の端子 | 通す部品 | つなぎ先 |
|---|---|---|
| D2 | 220Ω | 表示器 11番(a) |
| D3 | 220Ω | 表示器 7番(b) |
| D4 | 220Ω | 表示器 4番(c) |
| D5 | 220Ω | 表示器 2番(d) |
| D6 | 220Ω | 表示器 1番(e) |
| D7 | 220Ω | 表示器 10番(f) |
| D8 | 220Ω | 表示器 5番(g) |
| D9 | 220Ω | 表示器 3番(dp) |
| D10 | 390Ω → 2N3904 のベース | コレクタ → 表示器 12番(桁1) |
| D11 | 390Ω → 2N3904 のベース | コレクタ → 表示器 9番(桁2) |
| D12 | 390Ω → 2N3904 のベース | コレクタ → 表示器 8番(桁3) |
| D13 | 390Ω → 2N3904 のベース | コレクタ → 表示器 6番(桁4) |
トランジスタのエミッタは、4つとも Arduino の GND につなぎます。2N3904 の足は、平らな面を手前にして足を下に向けたとき、左から E(エミッタ)・B(ベース)・C(コレクタ)です。
つまり、配線は「形の8本」と「桁の4本」の2つの表に分けて、1本ずつ印をつけながらつなぐと迷いません。

プログラムの流れ:消してから、形を変えて、点ける
①全部の桁を OFF、②セグメントを次の数字の形に、③その桁だけ ON、④2.5ms 待つ、をくり返します。この順番を守らないと、となりの桁に別の数字が薄く出ます。
①を飛ばして、桁2を ON にしたままセグメントを桁3の形に変えると、その一瞬だけ桁2に桁3の形が映ります。これが何百回もくり返されるので、桁2に薄く別の数字(ゴーストと呼ばれます)が見えます。
つまり、ダイナミック点灯のプログラムは、4行の手順を速くくり返すだけです。

早見表:セグメントの抵抗と電流(4桁ダイナミック点灯)
赤(VF 2.0V)の 4桁をダイナミック点灯するなら、5V のマイコンは 220Ω、3.3V のマイコンは 100Ω が出発点です。
| 電源 | 抵抗 | 1本(点灯中) | 平均(÷4) | 桁(8本) |
|---|---|---|---|---|
| 5V | 150Ω | 18.7mA | 4.7mA | 149mA |
| 5V | 220Ω | 12.7mA | 3.2mA | 102mA |
| 5V | 330Ω | 8.5mA | 2.1mA | 68mA |
| 3.3V | 68Ω | 16.2mA | 4.0mA | 129mA |
| 3.3V | 100Ω | 11.0mA | 2.8mA | 88mA |
| 3.3V | 150Ω | 7.3mA | 1.8mA | 59mA |
計算は(電源 − VF 2.0V − VCE 0.2V)÷ 抵抗です。この記事では「点灯中 18mA 以下(最大定格 20mA に余裕)」「平均 2mA 以上(暗くなりすぎない)」を目安にしました。
3.3V のマイコンでは、ベース抵抗も 3.3V で計算し直します。白や青の表示器は VF が 3V 前後と大きいので、3.3V では電圧が足りないことがあります。色を変えるときは、その品番の VF で計算し直してください。
つまり、迷ったら 5V なら 220Ω から始め、実物の明るさを見て 330Ω などに変えていきます。

よくある失敗4つ:7セグメントLEDを点けるとき
コモンの取り違え・抵抗を共通側に1本だけ・桁をマイコンの端子に直結・切り替えの順番、の4つがよくある失敗です。
1. コモンを取り違える
カソードコモン用の回路にアノードコモンをつなぐと、LED の向きが逆なので1つも点きません。買う前に型番とデータシートで確かめます。
2. 抵抗を共通側に1本だけ入れる
点くセグメントの数で電流が分かれるので、数字ごとに明るさが変わります。抵抗はセグメントごとに1本ずつ入れます。
3. 桁をマイコンの端子に直結する
8本ぶん、最大 109mA が1本の端子に集まります。端子は 40mA までなので、トランジスタで受けます。
4. 切り替えの順番をまちがえる
桁を点けたまま形を変えると、となりの桁に薄く別の数字が出ます。「消す→変える→点ける」の順にします。
つまり、「向き」「抵抗の位置」「電流」「順番」の4つを、電源を入れる前とプログラムを書くときに確かめます。


