【Arduino】 シフトレジスタでLEDを制御する ②

LESSON 017

  シフトレジスタ(74HC595)を用いて任意のデータでLEDを制御する

  
 LESSON 016 では シフトレジスタ の シリアルデータ から パラレルデータ に変換する仕組みを解説し、シフトレジスタ内部でもデータの循環する機能について実験しました。
 今回は単純に任意のデータを出力する方法を説明します。
構成部品

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

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

スケッチ《 test015》
   
const int SER = 8;
const int RCLK = 9;
const int SRCLK = 10;
void setup() {
  pinMode(SRCLK, OUTPUT);
  pinMode(RCLK,  OUTPUT);
  pinMode(SER,   OUTPUT);
}
void loop() { 
  byte data = B00101111;  
  shiftOut(SER,SRCLK, MSBFIRST, B01010101);
  digitalWrite(RCLK, LOW);
  digitalWrite(RCLK, HIGH);
  delay(1000); 
  shiftOut(SER,SRCLK, LSBFIRST, B01010101);
  digitalWrite(RCLK, LOW);
  digitalWrite(RCLK, HIGH);
  delay(1000); 
  shiftOut(SER,SRCLK, MSBFIRST, data);
  digitalWrite(RCLK, LOW);
  digitalWrite(RCLK, HIGH);
  delay(1000);  
  shiftOut(SER,SRCLK, LSBFIRST, data);
  digitalWrite(RCLK, LOW);
  digitalWrite(RCLK, HIGH);
  delay(1000);  
}

  
解説

  • void loop() 
      

    shiftOut(SER, SRCLK, bitOrder, value);

       bitOrder: MSBFIRSTまたはLSBFIRST
                            Most Significant Bit Firstは最上位ビットから送ること
                            Least Significant Bit Firstは最下位ビットから送ること
     
     value: 送信したいデータ (byte)
       

  結果
  

まとめ

○ Arduino​でシフトレジスタ(74HC595)でLEDを制御する場合は、GPIO 3ピンで8つの信号(LED)を制御出来ます。今回はLEDを点灯させる実験しましたが、LEDからモーターへ替えると3つの信号でモータ 8個を駆動出来ます。
       
○ Arduino を 学ぶ上で書籍やWebpageを参考に作っていますが、私なりに噛み砕いて書いているつもりですが、判らない点がありましたら連絡下さい。

目次