More Related Content
Similar to AMA 中級術科實作 I (20)
More from 吳錫修 (ShyiShiou Wu) (20)
AMA 中級術科實作 I
- 1. 電子工程系應 用 電 子 組
電 腦 遊 戲 設 計 組
AMA中級術科實作 I
(控制USB風扇轉動)
吳錫修
Sep. 7, 2016
- 2. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
過按鍵控制風扇轉動,在七段顯示器上顯示風扇轉動狀態,並且由
蜂鳴器提示按鍵聲音
AMA Fundamentals術科功能需求
2
按鍵 風扇 七段顯示器 蜂鳴器
1 正轉(送風) F 500Hz, 0.3秒
2 停止 S 500Hz, 1秒
3 反轉(抽風) b
500Hz, 0.3秒,
2次,間隔0.1秒
- 8. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
硬體接線
依據題組指定之IO埠腳位接線 (以題組A為例)
風扇模組接線
實作 1/6
8
接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
- 9. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
參照題組IO埠編號,修改config.h檔 (題組A)
#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
實作 2/6
9
馬達驅動模組
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
- 10. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
開啟Examdata.ino檔
修改Examdata.ino開頭註解中之姓名、IO埠編號、准考證號碼
/*=============================================
姓名:○○○ 術科准考證號碼:123456789
指定I/O埠編號:A/B/C
=============================================*/
以准考證號碼做為檔名,另存新檔
實作 3/6
10
- 11. 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};
實作 4/6
11
- 12. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
在setup()中使用pinMode()指令設定Arduino IO腳位之IO方向
void setup() {
pinMode(IN1, OUTPUT); // 設定風扇控制腳為輸出
pinMode(IN2, OUTPUT);
}
實作 5/6
12
- 13. shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
在loop()中控制風扇轉動
void loop() {
digitalWrite(IN1, HIGH); // 風扇正轉(送風)
digitalWrite(IN2, LOW);
delay(5000);
digitalWrite(IN1, LOW); // 風扇停止
digitalWrite(IN2, LOW);
delay(3000);
digitalWrite(IN1, LOW); // 風扇反轉(吸風)
digitalWrite(IN2, HIGH);
delay(5000);
digitalWrite(IN1, LOW); // 風扇停止
digitalWrite(IN2, LOW);
delay(3000);
}
實作 6/6
13