電子工程系應 用 電 子 組
電 腦 遊 戲 設 計 組
Arduino AMA中級認
證術科實作 吳錫修
Oct 21, 2016
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
修改設定檔 1/3
2
馬達驅動模組
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
shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
 參照題組IO埠編號,修改config.h檔 (題組B)
#define IN1 12 // 宣告連接馬達控制端1之腳位
#define IN2 13 // 宣告連接馬達控制端2之腳位
#define Buzzer 7 // 宣告蜂鳴器之腳位
#define KEY1 4 // 宣告按鍵1之腳位
#define KEY2 5 // 宣告按鍵2之腳位
#define KEY3 6 // 宣告按鍵3之腳位
#define seg_a 3 // 宣告7段顯示器seg_a之腳位
#define seg_b 2
#define seg_c A5
#define seg_d A4
#define seg_e A3
#define seg_f A2
#define seg_g A1
#define seg_dp A0
修改設定檔 2/3
3
馬達驅動模組
HT6751
七段顯示器模組 蜂
鳴
器
矩陣按鍵
IN1 IN2 IN3 dp g f e d c b a com KEY1-3
D12 D13 GND A0:A5 D2:D3 2 D7 D4,D5,D6
shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
 參照題組IO埠編號,修改config.h檔 (題組C)
#define IN1 2 // 宣告連接馬達控制端1之腳位
#define IN2 3 // 宣告連接馬達控制端2之腳位
#define Buzzer 13 // 宣告蜂鳴器之腳位
#define KEY1 A3 // 宣告按鍵1之腳位
#define KEY2 A4 // 宣告按鍵2之腳位
#define KEY3 A5 // 宣告按鍵3之腳位
#define seg_a 11 // 宣告7段顯示器seg_a之腳位
#define seg_b 10
#define seg_c 9
#define seg_d 8
#define seg_e 7
#define seg_f 6
#define seg_g 5
#define seg_dp 4
修改設定檔 3/3
4
馬達驅動模組
HT6751
七段顯示器模組 蜂
鳴
器
矩陣按鍵
IN1 IN2 IN3 dp g f e d c b a com KEY1-3
D2 D3 GND D4:D11 3 D13 A3,A4,A5
shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
 開啟Examdata.ino檔
 修改Examdata.ino開頭註解中之姓名、IO埠編號、准考證號碼
/*=============================================
姓名:○○○ 術科准考證號碼:123456789
指定I/O埠編號:A/B/C
=============================================*/
 以准考證號碼做為檔名,另存新檔
修改程式檔
5
shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
 以題組A為例
 風扇模組
接線 1/4
6
接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
shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
 按鍵模組
接線 2/4
7
接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
shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
 顯示模組
接線 3/4
8
接5V
接Arduino A5,A4,A3,A2,A1,A0
接Arduino D7
接Arduino D6
馬達驅動模組
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
shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
 聲音模組接線
接線 4/4
9
接Arduino D5
馬達驅動模組
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
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};
修改程式 1/7
10
shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
 在setup()中使用pinMode()指令設定Arduino IO腳位之IO方向
 按鍵為輸入 (INPUT),其餘為輸出 (OUTPUT)
void setup() {
pinMode(IN1, OUTPUT); // 設定馬達控制腳為輸出
pinMode(IN2, OUTPUT);
pinMode(KEY1, INPUT); // 設定按鍵控制腳為輸入
pinMode(KEY2, INPUT);
pinMode(KEY3, INPUT);
for (i=0; i<7; i++) // 設定七段顯示器控制腳為輸出
pinMode(seg7[i], OUTPUT);
pinMode(Buzzer, OUTPUT); // 設定蜂鳴器控制腳為輸出
}
修改程式 2/7
11
shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
 撰寫LedOut()函式,將顯示碼送到7段顯示器
// 將控制碼輸出到七段顯示器上,位元0~位元6,依序為 abcdefg
void LedOut(byte code) {
for (i=0; i<7; i++)
// 讀出code之指定位元, 並輸出到對應的7段顯示器接腳
digitalWrite(seg7[i], bitRead(code, i));
}
修改程式 3/7
12
shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
 在loop()中依據按鍵狀態控制風扇,在7段顯示器上顯示風扇狀態並
讓蜂鳴器發出提示聲音,程式架構如下:
void loop() {
if (digitalRead(KEY1)==0 && mode!=1) {
mode=1; // 設定mode為1,避免重複動作
在此撰寫按鍵1要執行的動作
}
if (digitalRead(KEY2)==0 && mode!=2) {
mode=2; // 設定mode為2,避免重複動作
在此撰寫按鍵2要執行的動作
}
if (digitalRead(KEY3)==0 && mode!=3) {
mode=3; // 設定mode為3,避免重複動作
在此撰寫按鍵3要執行的動作
}
修改程式 4/7
13
shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
 按鍵1作業程式
void loop() {
if (digitalRead(KEY1)==0 && mode!=1) {
mode=1; // 設定mode為1,避免重複動作
digitalWrite(IN1, HIGH);// 風扇正轉(送風)
digitalWrite(IN2, LOW);
LedOut(0x71); // 七段顯示器顯示 F,0b01110001
tone(Buzzer,500, 300); // 蜂鳴器500Hz提示0.3秒,⼀次
delay(300); // 等待發聲作業結束
}
修改程式 5/7
14
b
cde
f
a
g
shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
 按鍵2作業程式
if (digitalRead(KEY2)==0 && mode!=2) {
mode=2; // 設定mode為2,避免重複動作
digitalWrite(IN1, LOW); // 風扇停止
digitalWrite(IN2, LOW);
LedOut(0x6D); // 七段顯示器顯示 S,0b01101101
tone(Buzzer,500, 1000); // 蜂鳴器500Hz提示 1 秒,⼀次
delay(1000); // 等待發聲作業結束
}
修改程式 6/7
15
b
cde
f
a
g
shapethefuture
電子工程系
應 用 電 子 組
電 腦 遊 戲 設 計 組
 按鍵3作業程式
if (digitalRead(KEY3)==0 && mode!=3) {
mode=3; // 設定mode為3,避免重複動作
digitalWrite(IN1, LOW); // 風扇反轉(吸風)
digitalWrite(IN2, HIGH);
LedOut(0x7C); // 七段顯示器顯示b,0b01111100
tone(Buzzer,500, 300); // 蜂鳴器500Hz提示0.3秒,兩次,間隔0.1秒
delay(400); // tone發聲0.3秒加上間隔0.1秒, 故應延遲0.4秒
tone(Buzzer,500, 300); // 蜂鳴器第2次提示音0.3秒
delay(300); // 等待發聲作業結束
}
}
修改程式 7/7
16
b
cde
f
a
g

Arduino AMA中級認證術科實作 all

  • 1.
    電子工程系應 用 電子 組 電 腦 遊 戲 設 計 組 Arduino AMA中級認 證術科實作 吳錫修 Oct 21, 2016
  • 2.
    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 修改設定檔 1/3 2 馬達驅動模組 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
  • 3.
    shapethefuture 電子工程系 應 用 電子 組 電 腦 遊 戲 設 計 組  參照題組IO埠編號,修改config.h檔 (題組B) #define IN1 12 // 宣告連接馬達控制端1之腳位 #define IN2 13 // 宣告連接馬達控制端2之腳位 #define Buzzer 7 // 宣告蜂鳴器之腳位 #define KEY1 4 // 宣告按鍵1之腳位 #define KEY2 5 // 宣告按鍵2之腳位 #define KEY3 6 // 宣告按鍵3之腳位 #define seg_a 3 // 宣告7段顯示器seg_a之腳位 #define seg_b 2 #define seg_c A5 #define seg_d A4 #define seg_e A3 #define seg_f A2 #define seg_g A1 #define seg_dp A0 修改設定檔 2/3 3 馬達驅動模組 HT6751 七段顯示器模組 蜂 鳴 器 矩陣按鍵 IN1 IN2 IN3 dp g f e d c b a com KEY1-3 D12 D13 GND A0:A5 D2:D3 2 D7 D4,D5,D6
  • 4.
    shapethefuture 電子工程系 應 用 電子 組 電 腦 遊 戲 設 計 組  參照題組IO埠編號,修改config.h檔 (題組C) #define IN1 2 // 宣告連接馬達控制端1之腳位 #define IN2 3 // 宣告連接馬達控制端2之腳位 #define Buzzer 13 // 宣告蜂鳴器之腳位 #define KEY1 A3 // 宣告按鍵1之腳位 #define KEY2 A4 // 宣告按鍵2之腳位 #define KEY3 A5 // 宣告按鍵3之腳位 #define seg_a 11 // 宣告7段顯示器seg_a之腳位 #define seg_b 10 #define seg_c 9 #define seg_d 8 #define seg_e 7 #define seg_f 6 #define seg_g 5 #define seg_dp 4 修改設定檔 3/3 4 馬達驅動模組 HT6751 七段顯示器模組 蜂 鳴 器 矩陣按鍵 IN1 IN2 IN3 dp g f e d c b a com KEY1-3 D2 D3 GND D4:D11 3 D13 A3,A4,A5
  • 5.
    shapethefuture 電子工程系 應 用 電子 組 電 腦 遊 戲 設 計 組  開啟Examdata.ino檔  修改Examdata.ino開頭註解中之姓名、IO埠編號、准考證號碼 /*============================================= 姓名:○○○ 術科准考證號碼:123456789 指定I/O埠編號:A/B/C =============================================*/  以准考證號碼做為檔名,另存新檔 修改程式檔 5
  • 6.
    shapethefuture 電子工程系 應 用 電子 組 電 腦 遊 戲 設 計 組  以題組A為例  風扇模組 接線 1/4 6 接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
  • 7.
    shapethefuture 電子工程系 應 用 電子 組 電 腦 遊 戲 設 計 組  按鍵模組 接線 2/4 7 接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
  • 8.
    shapethefuture 電子工程系 應 用 電子 組 電 腦 遊 戲 設 計 組  顯示模組 接線 3/4 8 接5V 接Arduino A5,A4,A3,A2,A1,A0 接Arduino D7 接Arduino D6 馬達驅動模組 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 電子工程系 應 用 電子 組 電 腦 遊 戲 設 計 組  聲音模組接線 接線 4/4 9 接Arduino D5 馬達驅動模組 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 電子工程系 應 用 電子 組 電 腦 遊 戲 設 計 組  宣告變數 #include "config.h" byte mode = 0; byte i; byte seg7[] = {seg_a, seg_b, seg_c, seg_d, seg_e, seg_f, seg_g}; 修改程式 1/7 10
  • 11.
    shapethefuture 電子工程系 應 用 電子 組 電 腦 遊 戲 設 計 組  在setup()中使用pinMode()指令設定Arduino IO腳位之IO方向  按鍵為輸入 (INPUT),其餘為輸出 (OUTPUT) void setup() { pinMode(IN1, OUTPUT); // 設定馬達控制腳為輸出 pinMode(IN2, OUTPUT); pinMode(KEY1, INPUT); // 設定按鍵控制腳為輸入 pinMode(KEY2, INPUT); pinMode(KEY3, INPUT); for (i=0; i<7; i++) // 設定七段顯示器控制腳為輸出 pinMode(seg7[i], OUTPUT); pinMode(Buzzer, OUTPUT); // 設定蜂鳴器控制腳為輸出 } 修改程式 2/7 11
  • 12.
    shapethefuture 電子工程系 應 用 電子 組 電 腦 遊 戲 設 計 組  撰寫LedOut()函式,將顯示碼送到7段顯示器 // 將控制碼輸出到七段顯示器上,位元0~位元6,依序為 abcdefg void LedOut(byte code) { for (i=0; i<7; i++) // 讀出code之指定位元, 並輸出到對應的7段顯示器接腳 digitalWrite(seg7[i], bitRead(code, i)); } 修改程式 3/7 12
  • 13.
    shapethefuture 電子工程系 應 用 電子 組 電 腦 遊 戲 設 計 組  在loop()中依據按鍵狀態控制風扇,在7段顯示器上顯示風扇狀態並 讓蜂鳴器發出提示聲音,程式架構如下: void loop() { if (digitalRead(KEY1)==0 && mode!=1) { mode=1; // 設定mode為1,避免重複動作 在此撰寫按鍵1要執行的動作 } if (digitalRead(KEY2)==0 && mode!=2) { mode=2; // 設定mode為2,避免重複動作 在此撰寫按鍵2要執行的動作 } if (digitalRead(KEY3)==0 && mode!=3) { mode=3; // 設定mode為3,避免重複動作 在此撰寫按鍵3要執行的動作 } 修改程式 4/7 13
  • 14.
    shapethefuture 電子工程系 應 用 電子 組 電 腦 遊 戲 設 計 組  按鍵1作業程式 void loop() { if (digitalRead(KEY1)==0 && mode!=1) { mode=1; // 設定mode為1,避免重複動作 digitalWrite(IN1, HIGH);// 風扇正轉(送風) digitalWrite(IN2, LOW); LedOut(0x71); // 七段顯示器顯示 F,0b01110001 tone(Buzzer,500, 300); // 蜂鳴器500Hz提示0.3秒,⼀次 delay(300); // 等待發聲作業結束 } 修改程式 5/7 14 b cde f a g
  • 15.
    shapethefuture 電子工程系 應 用 電子 組 電 腦 遊 戲 設 計 組  按鍵2作業程式 if (digitalRead(KEY2)==0 && mode!=2) { mode=2; // 設定mode為2,避免重複動作 digitalWrite(IN1, LOW); // 風扇停止 digitalWrite(IN2, LOW); LedOut(0x6D); // 七段顯示器顯示 S,0b01101101 tone(Buzzer,500, 1000); // 蜂鳴器500Hz提示 1 秒,⼀次 delay(1000); // 等待發聲作業結束 } 修改程式 6/7 15 b cde f a g
  • 16.
    shapethefuture 電子工程系 應 用 電子 組 電 腦 遊 戲 設 計 組  按鍵3作業程式 if (digitalRead(KEY3)==0 && mode!=3) { mode=3; // 設定mode為3,避免重複動作 digitalWrite(IN1, LOW); // 風扇反轉(吸風) digitalWrite(IN2, HIGH); LedOut(0x7C); // 七段顯示器顯示b,0b01111100 tone(Buzzer,500, 300); // 蜂鳴器500Hz提示0.3秒,兩次,間隔0.1秒 delay(400); // tone發聲0.3秒加上間隔0.1秒, 故應延遲0.4秒 tone(Buzzer,500, 300); // 蜂鳴器第2次提示音0.3秒 delay(300); // 等待發聲作業結束 } } 修改程式 7/7 16 b cde f a g