1-3.Arduinoで7SegLEDを連続で光らせよう(準備①)
今回も応用編です。
Arduinoで7セグLEDの点灯を制御してみたいと思います。
その前に、7セグLEDを理解せねばなりません。
それも、複数桁のセグLEDを制御する前に、
まずは1桁セグの制御を理解しましょう。
1桁の7セグの場合
7セグは一つのCom(GND側)と8つのコントロール端子できています。
Com側はGND、コントロール側はデジタルピンに設定します。
中身はLED(ダイオード)ですので、逆に接続すると電気が流れません。
というわけで、
今回はHIGHにすることで、光らせます。
◆回路
回路は、基本的には前回と一緒です。
↓の写真をみて、頑張って接続してください。
①デジタルピン6-13は、180Ωの抵抗に接続しています。
②抵抗の先の片方はLEDを経由してGND
③抵抗の先のもう一方は、線を経由して7セグLEDのA-GとDot端子に接続しています。
④LEDの先と、7セグLEDのGNDを、ArduinoのGNDに接続しています。
※Pinが隣接するところは、念のため熱収縮チューブでガードしてます。
(本当は収縮させるべきだろうけど、はめてるだけ)
◆スケッチ(コード)
※今回からコードは最後に書くことにしました。
デジタル出力は、前回と同様の方法です。
後で、コードを書き込んでみてね
それでは、Arduinoに書き込んで動かしてみましょう。
AからG、そしてDot端子をHIGHにしていくと、
こんな感じで光りますね。
※3ステップ目
※4ステップ目
※5ステップ目
この、LEDの光らせる組み合わせで、
数字として認識できるというわけです。
次回は、実際に1から0まで制御してみましょう。
1コード1日記にするため、この日記はここまでとします。
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
雑談
一般的に、7セグといいますが、
最近は斜線を設けたり、丸みを帯びた形にしているものもあります。
今回の7セグも、ドットがあるので実際のところ8セグメントなんですよね。
1桁のセグは制御に8Pinかかります。
複数セグはどうするのでしょうか?
PIN数が足りなくなる?
そんなことはありません。
ただ、ちょっと制御が大変になってきますね。
それはまた追々説明します。
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
それでは、巻末に移動させたコード(スケッチ)です。
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
/*
* Author: SAI
*/
/* *** Define 定義 *** */
// A
// ----
// F | G |B
// ----
// E | |C
// ---- . Dot
// D
const int ASeg = 13;
const int BSeg = 12;
const int CSeg = 11;
const int DSeg = 10;
const int ESeg = 9;
const int FSeg = 8;
const int GSeg = 7;
const int DotSeg = 6;
const int LED_ON = HIGH;
const int LED_OFF = LOW;
/* initial setting 初期設定 */
void setup() {
/* IO output setting IO出力設定 7Seg用端子を出力 */
pinMode(ASeg, OUTPUT);
pinMode(BSeg, OUTPUT);
pinMode(CSeg, OUTPUT);
pinMode(DSeg, OUTPUT);
pinMode(ESeg, OUTPUT);
pinMode(FSeg, OUTPUT);
pinMode(GSeg, OUTPUT);
pinMode(DotSeg, OUTPUT);
}
/* Mail loop 通常処理(繰り返し) */
void loop() {
/* 0.5msec sequence ON 0.5秒ごと、各PINを点灯流れる点灯 */
digitalWrite(ASeg, LED_ON); // LED ON
delay(500);
digitalWrite(BSeg, LED_ON); // LED ON
delay(500);
digitalWrite(CSeg, LED_ON); // LED ON
delay(500);
digitalWrite(DSeg, LED_ON); // LED ON
delay(500);
digitalWrite(ESeg, LED_ON); // LED ON
delay(500);
digitalWrite(FSeg, LED_ON); // LED ON
delay(500);
digitalWrite(GSeg, LED_ON); // LED ON
delay(500);
digitalWrite(DotSeg, LED_ON); // LED ON
delay(500);
/* 0.5msec sequence OFF 0.5秒ごと流れる消灯 */
digitalWrite(ASeg, LED_OFF); // LED OFF
delay(500);
digitalWrite(BSeg, LED_OFF); // LED OFF
delay(500);
digitalWrite(CSeg, LED_OFF); // LED OFF
delay(500);
digitalWrite(DSeg, LED_OFF); // LED OFF
delay(500);
digitalWrite(ESeg, LED_OFF); // LED OFF
delay(500);
digitalWrite(FSeg, LED_OFF); // LED OFF
delay(500);
digitalWrite(GSeg, LED_OFF); // LED OFF
delay(500);
digitalWrite(DotSeg, LED_OFF); // LED OFF
delay(500);
}
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()






