2016年

4月

04日

Arduino マルチファンクションシールド メソッド化 点灯のスケッチ 3/4

Arduino マルチファンクションシールドを使ったシフトレジスタとダイナミック点灯のプログラミングの続き。

 

「ラボワーク」ホチキス先生の「プログラマーと呼ばれたい」)に参加して学んだことをブログにてまとめています。

7セグメントLEDを点灯させるプログラムをメソッド化します。次のプログラムはLEDチューブを点灯させるメソッド「ledseg」を定義し、バイド型の引数を2つ渡してLEDチューブを点灯させます。引数1で数字の型を決め、引数2で点灯させるチューブを決めます。

Arduinoスケッチ

byte myByte1 = 0xC0;//C0,F9,A4,B0,99,92,82,F8,80,90,7F
byte myByte2 = 0xF1;//F1,F2,F4,F8 左から1,2,3,4番目のチューブ

void setup() {
  // put your setup code here, to run once:
  pinMode(4,OUTPUT);// multifunction board pin 4(LATCH)Digispark pin 0
  pinMode(7,OUTPUT);// multifunction board pin 7(CLOK)Digispark pin 1
  pinMode(8,OUTPUT);// multifunction board pin 8(DATA)Digispark pin 2

}

void loop() {
  // put your main code here, to run repeatedly:
  ledseg(myByte1,myByte2);
}

void ledseg(byte myByteData1,byte myByteData2){
  digitalWrite(4,LOW); //LATCHをLOWにして外す

  shiftOut(8,7,MSBFIRST,myByteData1);
  shiftOut(8,7,MSBFIRST,myByteData2);

  digitalWrite(4,HIGH); //LATCHをHIGHにしてラッチする
}

ここまでのプログラムで任意のLEDチューブに表示することができましたが、表示できる数字はただの1種類です。それぞれのチューブに異なる数字を表示させることはできません。あくまでも1つの数字を表示させるだけです。1234と表示させたい場合には「ダイナミック点灯」という手法を使います。

 

目 次