1-4.Arduinoで7セグLEDを制御しよう

 

今回は、前回の続き、

今回は、1-3.と同じ回路で、数字を表現します。

 

 

数字が表示できたら、

表現の幅が広がりますね。

 


前回は、7セグのハード的なつくりを理解できたと思います。

 

 

例えば、

BとCだけON残りをOFFにすれば、数字のになりますね。

 

 

マイコンのスピードはとっても高速ですので、

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でした。

フォローしてね…