【Arduino】 7セグメントLEDを光らせる

LESSON 019

  シフトレジスタ(74HC595)を用いて7セグメントLEDを光らせる。

  
 7セグメントLEDとはLEDを①の様に配置し8本の信号を制御して16進数の 0 ~ F までを表示させルLEDパーツでLED数字表示器とも呼ばれています。 
 7セグメントLEDの略図として①がよく使われていますが、裏のピンの番号の表が必要になります。②は、表のLEDと裏のピンの番号と合わせた物です。 
   
 7セグメントLEDは、アノードまたはカソードのどちらかが共通端子になっています。
 
 今回はカソードコモンを使用します。
 例えば、0ならば③と⑧ピンはGNDになりますので、5,10ピン以外のLEDのピンを全てONにすると 0 が表示されます。
   
 次の表の文字が表示出来るようにLEDを点灯させます。
  
 
目 次

    • 構成部品
    • 配線図
    • スケッチ
    • 解説
    • 結果
    • まとめ
構成部品

Arduino​
USBケーブル​
ブレッドボード​
74HC595
7セグメントLED​
抵抗​ 220Ω
ジャンパー線
配線図  LESSON 016 と同じです。 

  
       GPIO     8   ⇒ SER
       GPIO   9 ⇒ RCLR
    GPIO 10    ⇒ SRCLK​ 
    GPIO GND   ⇒ ー
     
    
   

スケッチ《 test017》
   
const int SER = 8;
const int RCLK = 9;
const int SRCLK = 10;
const int t = 1000;
byte dataB[] = {
  B01110111,
  B00010100,
  B10110011,
  B10110110,
  B11010100,
  B11100110,
  B11100111,
  B01110100,
  B11110111,
  B11110100,
  B11110101,
  B11000111,
  B01100011,
  B10010111,
  B11100011,
  B11100001,
};

void setup() {
  pinMode(SRCLK, OUTPUT);
  pinMode(RCLK,  OUTPUT);
  pinMode(SER,   OUTPUT);
}

void loop() {
  for ( int i=0; i<16; i++ ) { 
  shiftOut(SER,SRCLK, MSBFIRST, dataB[i]);
  digitalWrite(RCLK, LOW);
  digitalWrite(RCLK, HIGH);
  delay(t); 
  }
}

  
解説

  • void loop()
      
     16進数 0~F までの シリアル信号 の表です。
       


       

       
 結果
       

まとめ

○ 今回はFOR文を使い、0からFまで繰り返しましたが、スケッチなどでカウントする方法もありますよね。
       
○ Arduino を 学ぶ上で書籍やWebpageを参考に作っていますが、私なりに噛み砕いて書いているつもりですが、判らない点がありましたら連絡下さい。

目次