2012年9月17日月曜日

2桁の7セグメント発光ダイオードに挑戦(スケッチ編その2)

今回は、前回のArduinoと7セグメントLEDの接続のスケッチを改良して、きちんと1桁めと2桁目に指定した数値を表示するスケッチに完了させます。


配線図はこれでした。






配線図のポイントは、2点。一つ目は、各桁のカソード側が共通になっていること。2つ目は、アノード側は、8番ピンと9番ピンに接続されていることです。

8番ピンはHigh、9番ピンをLowにすると、何が起きるか、予想してみます。
上の配線図で、8番ピンはオレンジ色、9番ピンは赤色です。配線を目で追うと、それぞれ、左の桁と右の桁に接続されいます。

つまり、8番ピン(左の桁へ接続)High、9番ピン(右の桁へ接続)Low にすれば、左側の桁のみ表示されます。
HighとLowを入れ替えれば、もちろん、表示する桁も入れ替わります。

スケッチで表現すると、

void setup(){

  //1~7番ピン デジタル出力へセット
  for (int i=1; i<=7; i++){
    pinMode(i,OUTPUT);
  }
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
}

//LEDレイアウトを定義
boolean Num_Array[10][7]={
  {0,0,0,0,0,0,1},{1,0,0,1,1,1,1},{0,0,1,0,0,1,0},{0,0,0,0,1,1,0},
  {1,0,0,1,1,0,0},{0,1,0,0,1,0,0},{1,1,0,0,0,0,0},{0,0,0,1,1,1,1},
  {0,0,0,0,0,0,0},{0,0,0,1,1,0,0}
};

//LED表示関数を定義
void NumPrint(int Number){
  for (int w=0; w<=6; w++){
  digitalWrite(w+1,Num_Array[Number][w]);
  }
}

void loop(){
    digitalWrite(8,HIGH);
    digitalWrite(9,LOW);
    NumPrint(2);
    delay(500);
    digitalWrite(8,LOW);
    digitalWrite(9,HIGH);
    NumPrint(3);
    delay(500);
}

void loopの中で、8番ピンと9番ピンを交互にHighとLowに切り替えているのがわかると思います。


8番ピンをHigh、9番ピンをLow
8番ピンをLow、9番ピンをHigh











それぞれの表示の切り替えの間を、500m秒(0.5秒)にしているので、切り替わっていることがわかりますが、もし、この表示切替時間を短時間で行うとどうなると思いますか。

人の目には、
 このように見えます。
この方法をダイナミック点灯と言うそうです。








では、試しに、Void Loopの中のdelay命令の値を変更してみます。

void loop(){
    digitalWrite(8,HIGH);
    digitalWrite(9,LOW);
    NumPrint(2);
    delay(10);
    digitalWrite(8,LOW);
    digitalWrite(9,HIGH);
    NumPrint(3);
    delay(10);
}

きちんと、【23】と表示されます。

でも、これだと、全力で【23】を表示しているので、使いにくいですね。
やっぱり関数化して、Loopの中からは、その関数へ表示する数値を渡したあとは、別な処理を行いたいです。

次回は、関数化に挑戦です。




・電子工作の基本100
・図解でわかるはじめての電子回路
・Android×Arduinoでつくるクラウド連携デバイス―Android ADKで電子工作

0 件のコメント:

コメントを投稿