七段顯示器



七段顯示器是由八個LED當組成,有共陽及與共陰極兩種,在購買時要注意是屬於哪一種,在這裡要示範的是共陰極的七段顯示器。

如下圖,共有十個接腳,分別將它編號為abcdefgp,和兩個接地(GND)腳。
如下圖,請依序將七段顯示器的a腳,連接一個300歐姆的電阻再接到Arduino第二個腳位(pin2)b腳串接電阻後再接到ArduinoPin3……,最後將七段顯示器的GND腳位接到ArduinoGND腳位。




當我們想顯示數字2時,觀察下圖,我們需要將abgde腳位設定為高電位,其他腳位則設定為低電位。對照上圖可以知道,我們要將Arduino23568腳位設為高電位。


數字
p
g
f
e
d
c
b
a
0
0
0
1
1
1
1
1
1
1
0
0
0
0
0
1
1
0
2
0
1
0
1
1
0
1
1
3
0
1
0
0
1
1
1
1
4
0
1
0
1
0
1
1
0
5
0
1
0
1
1
1
0
1
6
0
1
1
1
1
1
0
1
7
0
0
0
0
0
1
1
1
8
0
1
1
1
1
1
1
1
9
0
1
0
1
1
1
1
1





/*
 * 七段顯示器,0~9 循環顯示
 */

const byte NUMBERS[10]=
{ B00111111,B00000110,
  B01011011,B01001111,
  B01100110,B01101101,
  B01111101,B00000111,
  B01111111,B01101111 } ;
const int LEDS[]={2,3,4,5,6,7,8,9} ;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600) ;
  for(int i=0;i<8;i++)
     pinMode(LEDS[i],OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  
  for(int i=0;i<10;i++) {  // 依序循環顯示數字 0、1、2...8、9。
   for(int j=0;j<8;j++) {
      if(bitRead(NUMBERS[i],j)) // 依序讀取NUMBERS[i]內a、b、c....的值,若是1表示該腳位需要施以高電位
          digitalWrite(LEDS[j],HIGH) ;
      else 
         digitalWrite(LEDS[j],LOW);
    }
   delay(1000);
  }
}