ここでは「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・・・とカウントダウンした数字が表示されます。



以上


コメント