7セグメントLEDについて
7セグメントLED(以下、7セグ)とは、十進法に基づいた数字(0~9)を8個のLEDランプで表示する装置である。
裏面に10本のピンが付いており、それぞれのLEDに対応するピンに電流を流すことで点灯する。


※上下の向き:丸いLEDがある方、または型番が印字されている方を下にする
7セグメントLEDのピン番号とLEDの関係
どのピン番号がどのLEDに対応しているのか、またGNDピン番号についてまとめてみた。
※以下画像、データシートより抜粋


画像右の下に書いている数字が、その上のアルファベットと紐づいている。
アルファベットは画像左を参照。
ピン番号がわかりにくいので以下の画像を用意した。

7セグメントLED 対応表 ピン番号:アルファベット:LED
【対応表 ピン番号:アルファベット:LED】
1 | E | ![]() | 6 | B | ![]() | |
2 | D | ![]() | 7 | A | ![]() | |
4 | C | ![]() | 9 | F | ![]() | |
5 | DP | ![]() | 10 | G | ![]() |
このLEDの組み合わせで表示したい数字を作る。
上記表にない3番、8番はGNDに繋ぐ。
7セグメントLEDで数字を表示してみよう
電子回路を組んで実際に数字を表示してみよう。
今回は数字の1を表示してみる。
【 使用するもの 】
・Arduino UNO
・ブレッドボード
・7セグメントLED
・抵抗 × 8 (この例では330Ωを使用)
・ジャンパーピン × 必要数
・シリアルケーブル
【電子回路図】

抵抗の左から順に7セグLEDの1番から紐づくように組んでいる。
数字の1を表示するためには、抵抗の左から3番目と5番目に電流を流せば良い。

このようにLEDの組み合わせで0~9の数字を表示することができる。
対応表を見ながら他の数字も表示してみよう。
7セグメントLEDをシフトレジスタ(74HC595)で制御する
シフトレジスタ(74HC595)を使って7セグに数字を表示してみよう。
先ほど使用した回路にシフトレジスタを取り付けて回路を組みます。
次にシフトレジスタを制御するためのプログラムを組みます。
【 使用するもの 】
・Arduino UNO
・ブレッドボード
・LED × 8
・抵抗 × 8 (この例では330Ωを使用)
・シフトレジスタ
・ジャンパーピン × 必要数
・シリアルケーブル
【電子回路図】

※7セグを見やすいようにするために交差する配線にしている
【ソースコード①】
#define SRCLK (7)
#define RCLK (6)
#define SER (5)
// 点灯パターン(1=点灯, 0=消灯)
const uint8_t one = 0b00101000;
void setup() {
pinMode(SRCLK, OUTPUT);
pinMode(RCLK, OUTPUT);
pinMode(SER, OUTPUT);
digitalWrite(SRCLK, LOW);
}
void loop() {
// シフトレジスタに1バイトのデータを送信する
shiftOut(SER, SRCLK, LSBFIRST, one);
// RCLK信号を送り、QA~QHのストレージレジスタに反映させ、出力する
digitalWrite(RCLK, LOW);
digitalWrite(RCLK, HIGH);
}
このプログラムをArduinoに書き込み、起動すると7セグに数字の1が表示される。
7セグメントLEDをシフトレジスタを使って数字の1と2を交互に表示させる
【ソースコード②】
#define SRCLK (7)
#define RCLK (6)
#define SER (5)
// 点灯パターン(1=点灯, 0=消灯)
const uint8_t one = 0b00101000;
const uint8_t two = 0b11001101;
void setup() {
pinMode(SRCLK, OUTPUT);
pinMode(RCLK, OUTPUT);
pinMode(SER, OUTPUT);
digitalWrite(SRCLK, LOW);
}
void loop() {
// シフトレジスタに1バイトのデータを送信する
shiftOut(SER, SRCLK, LSBFIRST, one);
// RCLK信号を送り、QA~QHのストレージレジスタに反映させ、出力する
digitalWrite(RCLK, LOW);
digitalWrite(RCLK, HIGH);
// LEDの変化を見るために表示を1秒遅らせる
delay(1000);
// シフトレジスタに1バイトのデータを送信する
shiftOut(SER, SRCLK, LSBFIRST, two);
// RCLK信号を送り、QA~QHのストレージレジスタに反映させ、出力する
digitalWrite(RCLK, LOW);
digitalWrite(RCLK, HIGH);
// LEDの変化を見るために表示を1秒遅らせる
delay(1000);
}
このようにビットを変えると表示される数字を変えられる。
対応表を参考にして、他の数字のビットを作り表示させてみよう。

Arduino初心者の方にオススメの本です。
電子パーツの使い方などが詳しく書かれています。



Arduino Uno本体です。
他の電子パーツはショップで買った方が安いかもしれません。
コメント