1-4.Arduinoで7セグLEDを制御しよう
今回は、前回の続き、
今回は、1-3.と同じ回路で、数字を表現します。
数字が表示できたら、
表現の幅が広がりますね。
前回は、7セグのハード的なつくりを理解できたと思います。
例えば、
BとCだけON、残りをOFFにすれば、数字の1になりますね。
マイコンのスピードはとっても高速ですので、
8この端子をON/OFF切り替えて、
1秒間待機する。
これを、0~9の間で繰り返せば、
タイマーみたいに見えるはずです。
それでは、試してみましょう。
◆回路
回路は、前回と全く一緒です。
↓の写真をみて、頑張って接続してください。
①デジタルピン6-13は、180Ωの抵抗に接続しています。
②抵抗の先の片方はLEDを経由してGND
③抵抗の先のもう一方は、線を経由して7セグLEDのA-GとDot端子に接続しています。
④LEDの先と、7セグLEDのGNDを、ArduinoのGNDに接続しています。
※Pinが隣接するところは、念のため熱収縮チューブでガードしてます。
(本当は収縮させるべきだろうけど、はめてるだけ)
◆スケッチ(コード)
※コードは、日記の最後に書いています。
デジタル出力は、前回と同様の方法です。
後で、コードを書き込んでみてね
それでは、Arduinoに書き込んで動かしてみましょう。
数字の”0”用の端子にセットして1秒待機、
数字の”1”用の端子にセットして1秒待機、
・
・
・
数字の”9”用の端子にセットして1秒待機、
これを繰り返していくと・・・
見た目はちゃんと数字ですね!
いかがでしょうか?
このセグメント表現は、
タイマー、カウンター、時計、メーター、記号表現
色々応用が利きます。
部品化、またはクラス化して、応用しやすくするといいと思います。
ところで、今回は1桁を表現しました。
1桁の表現には、8端子必要でしたね。
では、4桁表現するには、どうするのでしょうか?
Arduinoは、デジタル出力は14端子しかありません。
どうするのでしょうか?
次回、説明しようと思います。
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
雑談
今回は、数字の0~9を表現してみました。
ほかにもアルファベットを表現する方法を、
過去の偉人たちが考えてます。
最近のデジタル機器は、
セグLEDではなくLCDやTFTが増えてきて見ることはなくなりましたが、
よく考えたものだと思います。
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
それでは、コードです。
今回は、数字を定義するのでちょっと長いですよ。
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
/*
* 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);
}
//Display function 0
void zero() {
digitalWrite(ASeg, LED_ON);
digitalWrite(BSeg, LED_ON);
digitalWrite(CSeg, LED_ON);
digitalWrite(DSeg, LED_ON);
digitalWrite(ESeg, LED_ON);
digitalWrite(FSeg, LED_ON);
digitalWrite(GSeg, LED_OFF);
}
//Display function 1
void one() {
digitalWrite(ASeg, LED_OFF);
digitalWrite(BSeg, LED_ON);
digitalWrite(CSeg, LED_ON);
digitalWrite(DSeg, LED_OFF);
digitalWrite(ESeg, LED_OFF);
digitalWrite(FSeg, LED_OFF);
digitalWrite(GSeg, LED_OFF);
}
//Display function 2
void two() {
digitalWrite(ASeg, LED_ON);
digitalWrite(BSeg, LED_ON);
digitalWrite(CSeg, LED_OFF);
digitalWrite(DSeg, LED_ON);
digitalWrite(ESeg, LED_ON);
digitalWrite(FSeg, LED_OFF);
digitalWrite(GSeg, LED_ON);
}
//Display function 3
void three() {
digitalWrite(ASeg, LED_ON);
digitalWrite(BSeg, LED_ON);
digitalWrite(CSeg, LED_ON);
digitalWrite(DSeg, LED_ON);
digitalWrite(ESeg, LED_OFF);
digitalWrite(FSeg, LED_OFF);
digitalWrite(GSeg, LED_ON);
}
//Display function 4
void four() {
digitalWrite(ASeg, LED_OFF);
digitalWrite(BSeg, LED_ON);
digitalWrite(CSeg, LED_ON);
digitalWrite(DSeg, LED_OFF);
digitalWrite(ESeg, LED_OFF);
digitalWrite(FSeg, LED_ON);
digitalWrite(GSeg, LED_ON);
}
//Display function 5
void five() {
digitalWrite(ASeg, LED_ON);
digitalWrite(BSeg, LED_OFF);
digitalWrite(CSeg, LED_ON);
digitalWrite(DSeg, LED_ON);
digitalWrite(ESeg, LED_OFF);
digitalWrite(FSeg, LED_ON);
digitalWrite(GSeg, LED_ON);
}
//Display function 6
void six() {
digitalWrite(ASeg, LED_ON);
digitalWrite(BSeg, LED_OFF);
digitalWrite(CSeg, LED_ON);
digitalWrite(DSeg, LED_ON);
digitalWrite(ESeg, LED_ON);
digitalWrite(FSeg, LED_ON);
digitalWrite(GSeg, LED_ON);
}
//Display function 7
void seven() {
digitalWrite(ASeg, LED_ON);
digitalWrite(BSeg, LED_ON);
digitalWrite(CSeg, LED_ON);
digitalWrite(DSeg, LED_OFF);
digitalWrite(ESeg, LED_OFF);
digitalWrite(FSeg, LED_OFF);
digitalWrite(GSeg, LED_OFF);
}
//Display function 8
void eight() {
digitalWrite(ASeg, LED_ON);
digitalWrite(BSeg, LED_ON);
digitalWrite(CSeg, LED_ON);
digitalWrite(DSeg, LED_ON);
digitalWrite(ESeg, LED_ON);
digitalWrite(FSeg, LED_ON);
digitalWrite(GSeg, LED_ON);
}
//Display function 9
void nine() {
digitalWrite(ASeg, LED_ON);
digitalWrite(BSeg, LED_ON);
digitalWrite(CSeg, LED_ON);
digitalWrite(DSeg, LED_ON);
digitalWrite(ESeg, LED_OFF);
digitalWrite(FSeg, LED_ON);
digitalWrite(GSeg, LED_ON);
}
/* Mail loop 通常処理(繰り返し) */
void loop() {
/* 1sec counter 1秒ごと、数字をカウントアップ */
zero();
delay(1000);
one();
delay(1000);
two();
delay(1000);
three();
delay(1000);
four();
delay(1000);
five();
delay(1000);
six();
delay(1000);
seven();
delay(1000);
eight();
delay(1000);
nine();
delay(1000);
}
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
SAIでした。














