つくったブログ

ぼくがつくったもの。

arduinoで2桁7セグLEDをカウントアップ。(ダイナミック点灯)

できた。


必要なもの

7セグLEDをひとつ付け足す。
arduinoで7セグLEDを点灯させてみる。 - つくったブログ

つなぎかた

ノートに書いてみた。
http://instagram.com/p/oqC199rLk0/

スイッチは13番ピンに接続。10kオームも使う。


スケッチ

ちょっと変更。小数点のLEDは使わないようにした。

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

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

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

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);
}

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

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

void loop(){
   val = digitalRead(BUTTON); // 入力を読み取りvalに格納
   digitalWrite(led_10,1);
   digitalWrite(led_1,0);
   NumPrint(state_10);
   delay(10);
   digitalWrite(led_10,0);
   digitalWrite(led_1,1);
   NumPrint(state_1);
   delay(10);
  //変化があるかどうかチェック
  if((val == HIGH) && (old_val == LOW)) {
    state = (state+1) % 100;  // state 1加算。
    state_10 = state /10 % 10;  //十の位を切り出し
    state_1 =state %10;        // 一の位を切り出し
  }
  old_val = val;  // valはもう古くなったので保管しておく
}
  • スイッチが一回押されるとstateが一加算される。100まで増えると0になる。
  • delayの値を変更してもらうと分かるが、すごい速さで一の位と十の位の数を交互に点灯している。
  • ダイナミック点灯。

完成。

やっと二桁ができた。次は温度でも測ろうか。

Cooking for Geeks ―料理の科学と実践レシピ (Make: Japan Books)

Cooking for Geeks ―料理の科学と実践レシピ (Make: Japan Books)