【Arduino】 シフトレジスタでバーサライターを作ろう

LESSON 018

  シフトレジスタ(74HC595)を用いてバーサライター作ろう

  
 LESSON 017 では 任意のデータを信号に変換する方法について実験しました。今回はバーサライターの作り方について実験していきましょう。
 バーサライターとは、LEDを点滅させこのLEDを振るか、回転させる事(LEDを固定し頭を方を振るという方法もありますが・・)により残像現象で文字や画像を映し出すことが出来ます。
    
 LEDを振ると「ABC」の文字が表示しますが、あんまり綺麗に撮れませんでした。
 
目 次

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

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

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

スケッチ《 test016》
   

const int SER = 8;
const int RCLK = 9;
const int SRCLK = 10;
const int t = 3;
const int ta =15;
int a;

byte dataB[] = {
  B00000111,
  B00111000,
  B01001000,
  B10001000,
  B10001000,
  B01001000,
  B00111000,
  B00000111,
  B00000000,
  B00000000,
  B11111111,
  B10010001,
  B10010001,
  B10010001, 
  B10010001,
  B10010001,
  B01011010,
  B00100100,
  B00000000,
  B00000000,
  B01111110, 
  B10000001, 
  B10000001,  
  B10000001, 
  B10000001,
  B10000001,
  B01000010, 
  B00100100,
  B00000000,
  B00000000,
 };

void setup() {
  pinMode(SRCLK, OUTPUT);
  pinMode(RCLK,  OUTPUT);
  pinMode(SER,   OUTPUT);
}
void loop() {
  delay(ta); 
  for ( int i=0; i<29; i++ ) { 
  shiftOut(SER,SRCLK, LSBFIRST, dataB[i]);
  digitalWrite(RCLK, LOW);
  digitalWrite(RCLK, HIGH);
  delay(t); 
  }
  delay(ta);
  for ( int i=28; i<=0; i-- ) { 
  shiftOut(SER,SRCLK, LSBFIRST, dataB[i]);
  digitalWrite(RCLK, LOW);
  digitalWrite(RCLK, HIGH);
  delay(t); 
  }  
}

  
解説

  • void loop()

     表示させたい文字や絵柄は Excel で表示させてから、シリアルデータに変換して配列のデータすると簡単にバーサライターのデータが作れます。 
      

       

まとめ

○ ブレッドボード​にシフトレジスタ(74HC595)とLEDを挿した状態でケーブルが繋がったままでブレッドボードを振ったのである程度「ABC」の文字が浮かび上がりましたが、コンパクトにまとめたら夏休みの自由研究にもできるかもしれませんね。
       
○ Arduino を 学ぶ上で書籍やWebpageを参考に作っていますが、私なりに噛み砕いて書いているつもりですが、判らない点がありましたら連絡下さい。

目次