2019年5月3日 星期五

TCweng_arduino七段顯示器製作倒數功能

七段顯示器是很常見的顯示器之一
在arduino專題中也很常被拿來使用

!!!!!!!要注意的是!!!!!!!
七段顯示器有共陰極跟共陽極兩種
也就是說
接錯就不能使用了
甚至會有燒掉的可能
雖然TC上次接錯也沒發生甚麼事XD


要控制一顆七段顯示器
分別要控制他的8個腳位
其他兩隻接腳是插在正極或接地上
這要看你買的是哪一種的
至於分辨牠的方式
最好還是先看清楚他的型號
再者就是直接實驗看看啦

接下來就直接開始實做的部分
要先讓顯示器有顯示0-9的能力
!!可以直接複製最底下的程式!!


七段顯示器不管是共陽極還是共陰極
內部構造都是由 8 個 LED 發光二極體所組成
我們分別把它命名為a, b, c, d, e, f, g 以及小數點 dp




至於要產生數字
簡單來說就是點亮指定的 LED

例如要產生數字 1,便點亮  b, c兩顆LED即可
依此類推
我們今天以共陰極當例子
有以下表格可以對照

!!!!至於共陽極的顯示器!!!!!!
下面表格中所有的 1 跟 0對調就可以了

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


接線的部分:

顯示器上下皆有五個腳位
由上至下,由左至右
分別是1-10腳位
3, 8 腳位接到 GND
其他的腳位就依序接到arduino的2, 3, 4, 5, 6, 7, 8腳位即可

(如需長時間使用,建議每支接腳上串接一顆 220歐姆電阻)


程式
// 七段顯示器製作倒數功能 
//TCweng

void setup() {               
  pinMode(2, OUTPUT);  
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  digitalWrite(9, 0);  // 關閉小數點
}

void loop() {
  // 顯示數字 '9'
  digitalWrite(2, 1);
  digitalWrite(3, 1);
  digitalWrite(4, 1);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 1);
  digitalWrite(8, 1);
  delay(1000);
  // 顯示數字 '8'
  digitalWrite(2, 1);
  digitalWrite(3, 1);
  digitalWrite(4, 1);
  digitalWrite(5, 1);
  digitalWrite(6, 1);
  digitalWrite(7, 1);
  digitalWrite(8, 1);
  delay(1000);
  // 顯示數字 '7'
  digitalWrite(2, 1);
  digitalWrite(3, 1);
  digitalWrite(4, 1);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  delay(1000);
  // 顯示數字 '6'
  digitalWrite(2, 1);
  digitalWrite(3, 0);
  digitalWrite(4, 1);
  digitalWrite(5, 1);
  digitalWrite(6, 1);
  digitalWrite(7, 1);
  digitalWrite(8, 1);
  delay(1000);
  // 顯示數字 '5'
  digitalWrite(2, 1);
  digitalWrite(3, 0);
  digitalWrite(4, 1);
  digitalWrite(5, 1);
  digitalWrite(6, 0);
  digitalWrite(7, 1);
  digitalWrite(8, 1);
  delay(1000);
  // 顯示數字 '4'
  digitalWrite(2, 0);
  digitalWrite(3, 1);
  digitalWrite(4, 1);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 1);
  digitalWrite(8, 1);
  delay(1000);
  // 顯示數字 '3'
  digitalWrite(2, 1);
  digitalWrite(3, 1);
  digitalWrite(4, 1);
  digitalWrite(5, 1);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 1);
  delay(1000);
  // 顯示數字 '2'
  digitalWrite(2, 1);
  digitalWrite(3, 1);
  digitalWrite(4, 0);
  digitalWrite(5, 1);
  digitalWrite(6, 1);
  digitalWrite(7, 0);
  digitalWrite(8, 1);
  delay(1000);
  // 顯示數字 '1'
  digitalWrite(2, 0);
  digitalWrite(3, 1);
  digitalWrite(4, 1);
  digitalWrite(5, 0);
  digitalWrite(6, 0);
  digitalWrite(7, 0);
  digitalWrite(8, 0);
  delay(1000);
  // 顯示數字 '0'
  digitalWrite(2, 1);
  digitalWrite(3, 1);
  digitalWrite(4, 1);
  digitalWrite(5, 1);
  digitalWrite(6, 1);
  digitalWrite(7, 1);
  digitalWrite(8, 0);  
  // 暫停 4 秒鐘
  delay(4000);
}

沒有留言:

張貼留言