注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ ここ]をクリックして今すぐ参加しましょう!
7セグメントディスプレイ
概要
7セグメントディスプレイは、数字や文字を表示できる装置です。7つのLEDが並列に接続されて構成されています。ディスプレイ上のピンを電源に接続し、関連するピンを有効にすることで、対応するLEDセグメントが点灯し、異なる文字/数字を表示できます。このレッスンでは、特定の文字を表示する方法を学びます。
必要なコンポーネント
このプロジェクトには以下のコンポーネントが必要です。
全セットを購入するのが便利です。こちらがリンクです:
名称 |
このキットのアイテム数 |
リンク |
|---|---|---|
Elite Explorer Kit |
300+ |
以下のリンクから個別に購入することもできます。
コンポーネント紹介 |
購入リンク |
|---|---|
- |
|
配線図
回路図
この実験では、7セグメントディスプレイのa-gの各ピンをそれぞれ1000オームの電流制限抵抗に接続し、その後4-11ピンに接続します。GNDはGNDに接続します。プログラミングにより、4-11ピンの一つまたは複数をHighレベルに設定して、対応するLED(複数可)を点灯させます。
コード
注釈
ファイル
13-7_segment.inoをelite-explorer-kit-main\basic_project\13-7_segmentのパスで直接開くことができます。または、このコードをArduino IDEにコピーしてください。
1/*
2 The code is designed to control a 7-segment display using an Arduino.
3 It sequentially displays numbers 1-9 and letters A-F on the 7-segment
4 display, with each symbol displayed for one second.
5
6 Board: Arduino Uno R4
7 Component: 7-segment Display
8*/
9
10// Define pins for each segment of the 7-segment display
11const int a = 7;
12const int b = 6;
13const int c = 5;
14const int d = 11;
15const int e = 10;
16const int f = 8;
17const int g = 9;
18const int dp = 4; // Decimal point
19
20void setup() {
21 // Set pins 4 to 11 as output
22 for (int thisPin = 4; thisPin <= 11; thisPin++) {
23 pinMode(thisPin, OUTPUT);
24 }
25 // Initialize display by turning off all segments
26 turnOffAllSegments();
27}
28
29void loop() {
30 // Display numbers 1 to 9 and letters A to F sequentially
31 digital_1(); delay(1000);
32 digital_2(); delay(1000);
33 digital_3(); delay(1000);
34 digital_4(); delay(1000);
35 digital_5(); delay(1000);
36 digital_6(); delay(1000);
37 digital_7(); delay(1000);
38 digital_8(); delay(1000);
39 digital_9(); delay(1000);
40 digital_A(); delay(1000);
41 digital_b(); delay(1000);
42 digital_C(); delay(1000);
43 digital_d(); delay(1000);
44 digital_E(); delay(1000);
45 digital_F(); delay(1000);
46}
47
48void digital_1() //display 1 to the 7-segment
49{
50 turnOffAllSegments();
51 digitalWrite(b, HIGH);
52 digitalWrite(c, HIGH);
53}
54
55void digital_2() //display 2 to the 7-segment
56{
57 turnOffAllSegments();
58 digitalWrite(a, HIGH);
59 digitalWrite(b, HIGH);
60 digitalWrite(g, HIGH);
61 digitalWrite(e, HIGH);
62 digitalWrite(d, HIGH);
63}
64
65void digital_3() //display 3 to the 7-segment
66{
67 turnOffAllSegments();
68 digitalWrite(a, HIGH);
69 digitalWrite(b, HIGH);
70 digitalWrite(c, HIGH);
71 digitalWrite(d, HIGH);
72 digitalWrite(g, HIGH);
73}
74void digital_4() //display 4 to the 7-segment
75{
76 turnOffAllSegments();
77 digitalWrite(b, HIGH);
78 digitalWrite(c, HIGH);
79 digitalWrite(f, HIGH);
80 digitalWrite(g, HIGH);
81}
82
83void digital_5() //display 5 to the 7-segment
84{
85 turnOffAllSegments();
86 digitalWrite(a, HIGH);
87 digitalWrite(f, HIGH);
88 digitalWrite(g, HIGH);
89 digitalWrite(c, HIGH);
90 digitalWrite(d, HIGH);
91}
92
93void digital_6() //display 6 to the 7-segment
94{
95 turnOffAllSegments();
96 digitalWrite(a, HIGH);
97 digitalWrite(f, HIGH);
98 digitalWrite(e, HIGH);
99 digitalWrite(d, HIGH);
100 digitalWrite(c, HIGH);
101 digitalWrite(g, HIGH);
102}
103
104void digital_7() //display 7 to the 7-segment
105{
106 turnOffAllSegments();
107 digitalWrite(a, HIGH);
108 digitalWrite(b, HIGH);
109 digitalWrite(c, HIGH);
110}
111
112void digital_8() //display 8 to the 7-segment
113{
114 turnOffAllSegments();
115 digitalWrite(a, HIGH);
116 digitalWrite(b, HIGH);
117 digitalWrite(c, HIGH);
118 digitalWrite(d, HIGH);
119 digitalWrite(e, HIGH);
120 digitalWrite(f, HIGH);
121 digitalWrite(g, HIGH);
122}
123
124void digital_9() //display 9 to the 7-segment
125{
126 turnOffAllSegments();
127 digitalWrite(a, HIGH);
128 digitalWrite(b, HIGH);
129 digitalWrite(c, HIGH);
130 digitalWrite(d, HIGH);
131 digitalWrite(f, HIGH);
132 digitalWrite(g, HIGH);
133}
134
135void digital_A() //display A to the 7-segment
136{
137 turnOffAllSegments();
138 digitalWrite(a, HIGH);
139 digitalWrite(b, HIGH);
140 digitalWrite(c, HIGH);
141 digitalWrite(e, HIGH);
142 digitalWrite(f, HIGH);
143 digitalWrite(g, HIGH);
144}
145
146void digital_b() //display b to the 7-segment
147{
148 turnOffAllSegments();
149 digitalWrite(c, HIGH);
150 digitalWrite(d, HIGH);
151 digitalWrite(e, HIGH);
152 digitalWrite(f, HIGH);
153 digitalWrite(g, HIGH);
154}
155
156void digital_C() //display C to the 7-segment
157{
158 turnOffAllSegments();
159 digitalWrite(a, HIGH);
160 digitalWrite(f, HIGH);
161 digitalWrite(e, HIGH);
162 digitalWrite(d, HIGH);
163}
164
165void digital_d() //display d to the 7-segment
166{
167 turnOffAllSegments();
168 digitalWrite(b, HIGH);
169 digitalWrite(c, HIGH);
170 digitalWrite(d, HIGH);
171 digitalWrite(e, HIGH);
172 digitalWrite(g, HIGH);
173}
174
175void digital_E() //display E to the 7-segment
176{
177 turnOffAllSegments();
178 digitalWrite(a, HIGH);
179 digitalWrite(d, HIGH);
180 digitalWrite(e, HIGH);
181 digitalWrite(f, HIGH);
182 digitalWrite(g, HIGH);
183}
184
185void digital_F() //display F to the 7-segment
186{
187 turnOffAllSegments();
188 digitalWrite(a, HIGH);
189 digitalWrite(e, HIGH);
190 digitalWrite(f, HIGH);
191 digitalWrite(g, HIGH);
192}
193
194void turnOffAllSegments() {
195 // Turn off all segments of the 7-segment display
196 for (int thisPin = 4; thisPin <= 11; thisPin++) {
197 digitalWrite(thisPin, LOW);
198 }
199}
コード解析
この実験のコードは少し長いかもしれませんが、構文はシンプルです。見てみましょう。
loop()内で関数を呼び出す
digital_1(); //diaplay 1 to the 7-segment
delay(1000); //wait for a second
digital_2(); //diaplay 2 to the 7-segment
delay(1000); //wait for a second
digital_3(); //diaplay 3 to the 7-segment
delay(1000); //wait for a second
digital_4(); //diaplay 4 to the 7-segment
これらの関数をloop()に呼び出すことで、7セグメントが0-Fを表示します。以下に関数の例を示します。 digital_2() を例にとります:
digital_2()の詳細な分析
void digital_2() //diaplay 2 to the 7-segment
{
turnOffAllSegments();
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(g, HIGH);
digitalWrite(e, HIGH);
digitalWrite(d, HIGH);
}
まず、7セグメントディスプレイで数字の 2 がどのように表示されるかを理解する必要があります。これは、a、b、d、e、gのセグメントに電力を供給することで実現されます。プログラミングでは、これらのセグメントに接続されたピンをHighレベルに設定し、cとfはLowレベルに設定します。まず、 turnOffAllSegments() 関数を使用してすべてのセグメントを消灯し、その後必要なセグメントを点灯させます。
この部分を実行すると、7セグメントは 2 を表示します。他の文字の表示も同様です。表示上、大文字の B と D は、それぞれ 8 と 0 と同じに見えるため、小文字で表示されます。