AMA 中級術科實作II
- 1. 電子工程系應 用 電 子 組
電 腦 遊 戲 設 計 組
AMA中級術科實作II
(矩陣按鍵控制USB風扇)
吳錫修
Sep 30, 2016
- 2. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
過按鍵控制風扇轉動,在七段顯示器上顯示風扇轉動狀態,並且由
蜂鳴器提示按鍵聲音
AMA Fundamentals術科功能需求
2
按鍵 風扇 七段顯示器 蜂鳴器
1 正轉(送風) F 500Hz, 0.3秒
2 停止 S 500Hz, 1秒
3 反轉(抽風) b
500Hz, 0.3秒,
2次,間隔0.1秒
- 4. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
檢查row 0按鍵動作
pin 0送出LOW
當row 0中的按鍵被按,對應的pin 4~pin 7為低電位
矩陣式鍵盤掃描原理 1/4
4
VDD
0
1
2
3
7
6
5
4
- 5. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
檢查row 1按鍵動作
pin 1送出LOW
當row 1中的按鍵被按,對應的pin 4~pin 7為低電位
矩陣式鍵盤掃描原理 2/4
5
VDD
0
1
2
3
7
6
5
4
- 6. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
檢查row 2按鍵動作
pin 2送出LOW
當row 2中的按鍵被按,對應的pin 4~pin 7為低電位
矩陣式鍵盤掃描原理 3/4
6
VDD
0
1
2
3
7
6
5
4
- 7. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
檢查row 3按鍵動作
pin 3送出LOW
當row 3中的按鍵被按,對應的pin 4~pin 7為低電位
矩陣式鍵盤掃描原理 4/4
7
VDD
0
1
2
3
7
6
5
4
- 8. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
只需使用key1~key3
需外接VDD
將pin 0直接接地
讀取pin 4~pin 6按鍵狀態
LOW表示按鍵被按下
AMA Fundamentals鍵盤輸入控制
8
VDD
0
6
5
4
- 10. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
if (條件式){
條件成立時所要執行之作業
}
例如:
if (digitalRead(KEY1)==0 && mode!=1) {
mode=1; // 設定mode為1,避免重複動作
digitalWrite(IN1, HIGH); // 風扇正轉(送風)
digitalWrite(IN2, LOW);
}
if指令
10
- 11. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
硬體接線
依據題組指定之IO埠腳位接線 (以題組A為例)
風扇模組接線
實作 1/8
11
接USB風扇(程式燒錄完成再接)
Mini USB供電(程式燒錄完成再接)
接Arduino D13
接Arduino D12
接Arduino GND
馬達驅動模組
HT6751
七段顯示器模組 蜂
鳴
器
矩陣按鍵
IN1 IN2 IN3 dp g f e d c b a com KEY1-3
D13 D12 GND D6:D7 A0:A5 1 D5 D2,D3,D4
- 12. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
按鍵模組接線
實作 2/8
12
接Arduino 5V
接Arduino GND
接GND
接Arduino D2
接Arduino D3
接Arduino D4
馬達驅動模組
HT6751
七段顯示器模組 蜂
鳴
器
矩陣按鍵
IN1 IN2 IN3 dp g f e d c b a com KEY1-3
D13 D12 GND D6:D7 A0:A5 1 D5 D2,D3,D4
- 13. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
開啟Examdata.ino檔
修改Examdata.ino開頭註解中之姓名、IO埠編號、准考證號碼
/*=============================================
姓名:○○○ 術科准考證號碼:123456789
指定I/O埠編號:A/B/C
=============================================*/
以准考證號碼做為檔名,另存新檔
實作 3/8
13
- 14. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
參照題組IO埠編號,修改config.h檔
#define IN1 13 // 宣告連接馬達控制端1之腳位
#define IN2 12 // 宣告連接馬達控制端2之腳位
#define Buzzer 5 // 宣告蜂鳴器之腳位
#define KEY1 2 // 宣告按鍵1之腳位
#define KEY2 3 // 宣告按鍵2之腳位
#define KEY3 4 // 宣告按鍵3之腳位
#define seg_a A5 // 宣告7段顯示器seg_a之腳位
#define seg_b A4
#define seg_c A3
#define seg_d A2
#define seg_e A1
#define seg_f A0
#define seg_g 7
#define seg_dp 6
實作 4/8
14
馬達驅動模組
HT6751
七段顯示器模組 蜂
鳴
器
矩陣按鍵
IN1 IN2 IN3 dp g f e d c b a com KEY1-3
D13 D12 GND D6:D7 A0:A5 1 D5 D2,D3,D4
- 15. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
宣告變數
#include "config.h"
byte mode = 0;
byte i;
byte seg7[] = {seg_a, seg_b, seg_c, seg_d, seg_e, seg_f, seg_g};
實作 5/8
15
- 16. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
在setup()中使用pinMode()指令設定Arduino IO腳位之IO方
向
void setup() {
pinMode(IN1, OUTPUT); // 設定風扇控制腳為輸出
pinMode(IN2, OUTPUT);
pinMode(KEY1, INPUT); // 設定按鍵控制腳為輸入
pinMode(KEY2, INPUT);
pinMode(KEY3, INPUT);
}
實作 6/8
16
- 17. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
在loop()中依據按鍵狀態控制風扇
void loop() {
if (digitalRead(KEY1)==0 && mode!=1) {
mode=1; // 設定mode為1,避免重複動作
digitalWrite(IN1, HIGH); // 風扇正轉(送風)
digitalWrite(IN2, LOW);
delay(300);
}
else if (digitalRead(KEY2)==0 && mode!=2) {
mode=2; // 設定mode為2,避免重複動作
digitalWrite(IN1, LOW); // 風扇停止
digitalWrite(IN2, LOW);
delay(300);
}
實作 7/8
17
- 18. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
else if (digitalRead(KEY3)==0 && mode!=3) {
mode=3; // 設定mode為3,避免重複動作
digitalWrite(IN1, LOW); // 風扇反轉(吸風)
digitalWrite(IN2, HIGH);
delay(300);
}
}
實作 8/8
18