つくったブログ

ぼくがつくったもの。

arduinoに4桁7セグLEDをつけて遊ぶ。

つくった。

http://instagram.com/p/p3MneCrLpS/

あそびました。

つなぎかた

http://instagram.com/p/qF53uArLvt/
こんなかんじでつなぎます。抵抗は220Ω。LEDはカソードコモン。(OSL40562-LB)

http://instagram.com/p/qF583irLvy/
LEDと番号はこのような対応になっています。6,8,9,12がそれぞれ一の位から千の位の桁のスイッチを担当しています。

LED番号 Pin.No
1 8
2 7
3 6
4 5
5 4
6 9
7 3
8 10
9 11
10 2
11 1
12 12

コード

//LED site:(http://happy-arduino.blogspot.jp/2012/08/17_27.html)

const int BUTTON = 11;  // プッシュボタンが接続されているピン
const int led_1  = 9;  // 7segLED the one's place 
const int led_10 = 10;  // 7segLED the ten's place 
const int led_100  = 11;  
const int led_1000 = 12; 

int val = 0;            // 入力ピンの状態がこの変数(val)に記憶される
int old_val = 0;        // valの前の値を保存しておく変数
int state = 0;          // LEDの状態(0ならオフ、1ならオン)
int state_1=0;          // the one's digit 
int state_10 =0;        // the ten's digit
int state_100 =0;        
int state_1000 =0;        

void setup(){
  //1~8番ピン デジタル出力へセット
  for (int i=1; i<=8; i++){
    pinMode(i,OUTPUT);
  }
  pinMode(BUTTON, INPUT);  // BUTTONは入力に設定
  pinMode(led_10, OUTPUT); // 7segLED はoutput
  pinMode(led_1, OUTPUT);
  pinMode(led_100, OUTPUT); 
  pinMode(led_1000, OUTPUT);
}

//LEDレイアウトを定義
boolean Num_Array[11][8]={
  {1,1,1,0,1,0,1,1},{0,0,1,0,1,0,0,0},{1,0,1,1,0,0,1,1},{1,0,1,1,1,0,1,0},
  {0,1,1,1,1,0,0,0},{1,1,0,1,1,0,1,0},{1,1,0,1,1,0,1,1},{1,1,1,0,1,0,0,0},
  {1,1,1,1,1,0,1,1},{1,1,1,1,1,0,1,0},{0,0,0,0,1,0,0}
};
//LED表示関数を定義

void NumPrint(int Number){
  
  for (int w=0; w<=7; w++){
  digitalWrite(w+1,Num_Array[Number][w]);
  }
}


void loop(){
   val = digitalRead(BUTTON); // 入力を読み取りvalに格納
   
   state = (state+1) % 10000;
   state_1 = (state+1) % 10; 
   state_10 = state /10 % 10;
   state_100 = state /100 % 10;
   state_1000 = state /1000 % 10;
   
   digitalWrite(led_1000,1);
   digitalWrite(led_100,1);
   digitalWrite(led_10,1);
   digitalWrite(led_1,0);
   NumPrint(state_1);
   delay(3);
   digitalWrite(led_1000,1);
   digitalWrite(led_100,1);
   digitalWrite(led_10,0);
   digitalWrite(led_1,1);
   NumPrint(state_10);
delay(3);
   digitalWrite(led_1000,1);
   digitalWrite(led_100,0);
   digitalWrite(led_10,1);
   digitalWrite(led_1,1);
   NumPrint(state_100);
delay(3);
   digitalWrite(led_1000,0);
   digitalWrite(led_100,1);
   digitalWrite(led_10,1);
   digitalWrite(led_1,1);
   NumPrint(state_1000);
     
   delay(3);
}
  • LEDが点灯する場所を行列に収めています。
  • Num_Array[0]を呼び出すと0が表示されるようなLED点灯のパターンになります。

http://instagram.com/p/qF82kaLLkg/

  • x位のスイッチをON、ほかの位のスイッチはOFF、桁の数字を表示させる。という作業を連続して行っています。これによって人間の目には全ての桁のLEDが同時に点灯しているようにみえます。

うごく。

つぎこそは温度計をつくる!


Arduinoをはじめようキット

Arduinoをはじめようキット