愛體驗認證

顯示具有 七段顯示器 標籤的文章。 顯示所有文章
顯示具有 七段顯示器 標籤的文章。 顯示所有文章

2019年5月3日 星期五

TCweng_switch,if迴圈控制LED

Arduino要讓LED點亮的方式有很多
每個專題也有不同的顯示目的
因此寫程式的方式也就百百種
所以今天TC就教大家
如何用if迴圈跟switch迴圈輪流點亮LED
提供大家寫更大專題的小地基


首先接線的部分如下圖






程式

int ledPin = 3;        // LED 接腳
int ButtonPin = 2;          // 按鈕接腳
int tc = 0;               // 定義一個按鈕狀態變數

void setup() {
  Serial.begin(9600);                           // 序列埠的速度為9600bps
  pinMode(ledPin, OUTPUT);              // 設定LED接腳為輸出模式
  pinMode(ButtonPin, INPUT);               // 設定按鈕接腳為輸入模式
  
}


void loop(){
  tc = digitalRead(ButtonPin);            // 取得按鈕的值
  delay(100);                                      // 延遲
  if (tc == HIGH) {                              // 如果按鈕被按下
    digitalWrite(ledPin, HIGH);           // 把LED輸出訊號為高電壓,點亮
  }
  else {
    digitalWrite(ledPin, LOW);            // 反之讓LED熄滅
  }

}



以上程式按著按鈕時會點亮LED
反之熄滅



接下來是switch迴圈的方式
一樣複製程式並上傳就可以了
只是程式工作的原理不同


int ledPin = 3; // LED 接腳
int ButtonPin = 2; // 按鈕接腳
int tc = 0; // 定義一個按鈕狀態變數

void setup() {

Serial.begin(9600); // 序列埠的速度為9600bps
pinMode(ledPin, OUTPUT); // 設定LED接腳為輸出模式
pinMode(ButtonPin, INPUT); // 設定按鈕接腳為輸入模式

}


void loop(){

tc = digitalRead(ButtonPin); // 取得按鈕的值

delay(100); // 延遲

switch(tc){
  case HIGH:
  digitalWrite(ledPin, HIGH); // 把LED輸出訊號為高電壓,點亮
  break; 

  case LOW: 
  digitalWrite(ledPin, LOW); // 反之讓LED熄滅
  break;

  }


}




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