ここでは「74HC595 シフトレジスタ」を使って7セグメントディスプレイを制御します。7セグメントディスプレイには、0から9までの数字を表示することが出来ます。
7セグメントディスプレイ


① | 「e」をオンにする |
② | 「d」をオンにする |
③ | GND |
④ | 「c」をオンにする |
⑤ | 「dp」をオンにする |
⑥ | 「b」をオンにする |
⑦ | 「a」をオンにする |
⑧ | GND |
⑨ | 「f」をオンにする |
⑩ | 「g」をオンにする |
7セグメント表示のマトリックス表は、以下のようになります。
表示 | ⑤ dp | ⑦ a | ⑥ b | ④ c | ② d | ① e | ⑨ f | ⑩ g |
---|---|---|---|---|---|---|---|---|
0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
2 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
3 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
4 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
5 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
6 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
7 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
8 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
9 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
使用部品
必要な部品は以下になります。
- Elegoo UNO R3 x 1
- 830 tie-points Breadboard x 1
- 220Ω 抵抗器 x 8
- 74HC595 IC
- 1桁 7-セグメントディスプレイ
- M-M Jumper wires x 26
以下のスターターキットに使用部品はすべて同梱されています。
リンク
回路をつくってみる

各ピンは、次のように繋げます。ただし、74HC595と7-SEGMENT DISPLAYの間には、220Ωの抵抗器を繋ぎます。
Arduino UNO R3 | 74HC595 | 7-SEGMENT DISPLAY |
---|---|---|
Q0 | ⑦ a | |
Q1 | ⑥ b | |
Q2 | ④ c | |
Q3 | ② d | |
Q4 | ① e | |
Q5 | ⑨ f | |
Q6 | ⑩ g | |
Q7 | ⑤ dp | |
GND | GND | ③ GND、⑧ GND |
5V | VCC | |
D2 | DS(SER) | |
5V | OE | |
D3 | ST_CP(RCLK) | |
D4 | SH_CP(SCLK) | |
5V | MR(CLEAR) | |
Q7′ |


プログラムを動かしてみる
チュートリアル付属のコードを動かしてみます。
//www.elegoo.com
//2016.12.12
// define the LED digit patterns, from 0 - 9
// 1 = LED on, 0 = LED off, in this order:
// 74HC595 pin Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7
// Mapping to a,b,c,d,e,f,g of Seven-Segment LED
byte seven_seg_digits[10] = { B11111100, // = 0
B01100000, // = 1
B11011010, // = 2
B11110010, // = 3
B01100110, // = 4
B10110110, // = 5
B10111110, // = 6
B11100000, // = 7
B11111110, // = 8
B11100110 // = 9
};
// connect to the ST_CP of 74HC595 (pin 3,latch pin)
int latchPin = 3;
// connect to the SH_CP of 74HC595 (pin 4, clock pin)
int clockPin = 4;
// connect to the DS of 74HC595 (pin 2)
int dataPin = 2;
void setup() {
// Set latchPin, clockPin, dataPin as output
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
// display a number on the digital segment display
void sevenSegWrite(byte digit) {
// set the latchPin to low potential, before sending data
digitalWrite(latchPin, LOW);
// the original data (bit pattern)
shiftOut(dataPin, clockPin, LSBFIRST, seven_seg_digits[digit]);
// set the latchPin to high potential, after sending data
digitalWrite(latchPin, HIGH);
}
void loop() {
// count from 9 to 0
for (byte digit = 10; digit > 0; --digit) {
delay(1000);
sevenSegWrite(digit - 1);
}
// suspend 4 seconds
delay(3000);
}
C++プログラムをアップロードして実行すると、7セグメントディスプレイに9、8、7・・・とカウントダウンした数字が表示されます。



以上
コメント