七段顯示器獨立函數

// http://coopermaa2nd.blogspot.tw/2010/12/arduino-lab7.html
//http://yehnan.blogspot.tw/2013/08/arduino_26.html (四合一七段顯示器)
#define NUM 7
int pins[NUM] = {D3,D2,D4,D5,D6,D0,D1};
#define t true
#define f false
boolean data[10][NUM] = {
  {1,1,1,1,1,1,0}, // 0
  {0,1,1,0,0,0,0}, // 1
  {1,1,0,1,1,0,1}, // 2
  {1,1,1,1,0,0,1}, // 3
  {0,1,1,0,0,1,1}, // 4
  {1,0,1,1,0,1,1}, // 5
  {1,0,1,1,1,1,1}, // 6
  {1,1,1,0,0,1,0}, // 7
  {1,1,1,1,1,1,1}, // 8
  {1,1,1,1,0,1,1}, // 9
};
// 把七段顯示器的顯示函式獨立出來。
// 輸入數字n(從0到9)
// 根據數字n,就可從data[n]找出七段顯示器的點亮、熄滅資料,
// 然後用迴圈,逐一設定8個腳位的HIGH或LOW,
// 也就等於點亮、熄滅那8個部分
void writeNumber(int n){
  for(int i = 0; i < NUM; i++){
    digitalWrite(pins[i], data[n][i] == t ? HIGH : LOW);
  }
}

void setup(){             
  for(int i = 0; i < NUM; i++){
    pinMode(pins[i], OUTPUT); 
  }
}



// 寫好writeNumber()後,loop()就簡單了。
// 迴圈從0到9,以七段顯示器顯示該數字,中間延遲1秒。
// 也就是說,會從0數到9,然後再從頭從0開始數。
void loop(){
  for(int n = 0; n <= 9; n++){
    writeNumber(n);
    delay(300);
  }
}

沒有留言:

張貼留言