Home> Note> Arduino> Arduino 亮度土壤濕度計(二)-七段顯示器

Arduino 亮度土壤濕度計(二) - 七段顯示器

2015.10.13

  上一篇已經提過這個東西的材料、功能,先複習一下成品,如下圖:

Lose image

本篇是介紹最上面的七段顯示器,如下圖

Lose image

這種 4 in 1 有 12隻接角,a~h 跟原本七段顯示器一樣,分別控制數字中哪一段位置,0~4 就是控制第幾個數字,接角如下圖。

Lose image Lose image

7段顯示器與Arduino 的接腳

--------------------------------------------------------------------

//僅僅只是電線的接法,並不是宣告變數
PIN_0 =10;
PIN_g =8;
PIN_c =4;
PIN_h =9;
PIN_d =5;
PIN_e =6;
PIN_b =3;
PIN_1 =11;
PIN_2 =12;
PIN_f =7;
PIN_a =2;
PIN_3 =13;
          

---------------------------------------------------------------------

數字1~9的程式碼

當我們給予高電位的時候,LED就會亮,依照這個邏輯,我們可以使用Arduino 「digitalWrite」指令,並且用副程式包起來

數字 0 為範例:

--------------------------------------------------------------------

//單個七段顯示器,數字顯示
void num0(){
  digitalWrite(2,0);
  digitalWrite(3,0);
  digitalWrite(4,0);
  digitalWrite(5,0);
  digitalWrite(6,0);
  digitalWrite(7,0);
  digitalWrite(8,1);
  digitalWrite(9,1);
}          

--------------------------------------------------------------------

顯示第幾個顯示器

這裡剛好相反,當其他三個都給予高電位,一個給予低電位,則就是控制低電位的顯示器

第一個顯示器為範例 : 

--------------------------------------------------------------------

//顯示第幾個顯示器
void first(){
  digitalWrite(10,1);
  digitalWrite(11,0);
  digitalWrite(12,0);
  digitalWrite(13,0);
  delay(4);
}          

--------------------------------------------------------------------

計算各顯示單位

--------------------------------------------------------------------

//計算所得數字要怎麼顯示在各個位數
void calculate(){
  int tenthou = (counter/10000)%10;
  int thou = (counter/1000)%10;
  int hun = (counter/100)%10;
  int ten = (counter/10)%10;
  int digit = counter%10;
  led2();
}

--------------------------------------------------------------------

計算完成之後,再來就顯示的部分,我們計算出來假設 ten = 0 ~ 9 (十位數),然後再使用副程式把判斷顯示的東西包起來,

--------------------------------------------------------------------

//判斷顯示數字為多少
LED(){
  if (ten == 0){
      num0();
      first();
    }
    else if (ten == 1){
      num1();
      first();
    }
    else if (ten == 2){
      num2();
      first();
    }
    else if (ten == 3){
      num3();
      first();
    }
    else if (ten == 4){
      num4();
      first();
    }
    else if (ten == 5){
      num5();
      first();
    }
    else if (ten == 6){
      num6();
      first();
    }
    else if (ten == 7){
      num7();
      first();
    }
    else if (ten == 8){
      num8();
      first();
    }
    else if (ten == 9){
      num9();
      first();
    }
}
          

--------------------------------------------------------------------

所以當我們得到數字的動作

  1. 呼叫計算的副程式 calculate()
  2. 呼叫判斷的副程式 LED()

七段顯示器部分,大概就介紹完了,根據範例把每一個都打齊全,其實就可以用了。

----------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------

Top