# Arduino範例實作解答 [TOC] --- ## 4-2-3:範例實作-紅綠燈 ```c= void setup() { pinMode(11, OUTPUT); // 紅燈設定為輸出 pinMode(12, OUTPUT); // 黃燈設定為輸出 pinMode(13, OUTPUT); // 綠燈設定為輸出 } void loop() { digitalWrite(11, HIGH); // 紅燈亮 digitalWrite(12, LOW); // 黃燈熄 digitalWrite(13, LOW); // 綠燈熄 delay(3000); // 紅燈亮 3 秒 digitalWrite(11, LOW); // 紅燈熄 digitalWrite(12, HIGH); // 黃燈亮 digitalWrite(13, LOW); // 綠燈熄 delay(1000); // 黃燈亮 1 秒 digitalWrite(11, LOW); // 紅燈熄 digitalWrite(12, LOW); // 黃燈熄 digitalWrite(13, HIGH); // 綠燈亮 delay(3000); // 綠燈亮 3 秒 } ``` ## 4-3-3:範例實作-左轉右轉 ```c= const int IN1 = 3; //L298N IN1 pin連接 Arduino pin 3 const int IN2 = 4; //L298N IN2 pin連接 Arduino pin 4 const int IN3 = 5; //L298N IN3 pin連接 Arduino pin 5 const int IN4 = 6; //L298N IN4 pin連接 Arduino pin 6 void setup(){ pinMode(3,OUTPUT); //Arduino 輸出電壓控制車子 pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); } void loop(){ Left(); //執行左轉的程式 delay(3000); //延遲3秒 Right(); //執行右轉的程式 delay(3000); //延遲3秒 } void Left (void){ // 左轉函式,使車子逆時針轉動 digitalWrite(IN1,HIGH); // 將 IN1 設定為高電位 digitalWrite(IN2,LOW); // 將 IN2 設定為低電位 digitalWrite(IN3,HIGH); // 將 IN3 設定為高電位 digitalWrite(IN4,LOW); // 將 IN4 設定為低電位 } void Right (void){ // 右轉函式,使車子順時針轉動 digitalWrite(IN1,LOW); // 將 IN1 設定為低電位 digitalWrite(IN2,HIGH); // 將 IN2 設定為高電位 digitalWrite(IN3,LOW); // 將 IN3 設定為低電位 digitalWrite(IN4,HIGH); // 將 IN4 設定為高電位 } ``` ## 4-4-2:範例實作-接收藍牙訊號 ```c= #include <SoftwareSerial.h> //引用函式庫 const int RX_PIN = 11; //定義RX pin const int TX_PIN = 12; //定義TX pin SoftwareSerial BLS(RX_PIN,TX_PIN); //使用函式定義新的RX, TX void setup() { Serial.begin(9600); //設定鮑率(螢幕) BLS.begin(9600); // 設定藍牙鮑率 } void loop() { if (BLS.available()>0) //如果接收到藍牙訊號 { char RCHAR = (char)BLS.read(); //讀取訊號並存下來 Serial.println(RCHAR); //印出訊號至電腦螢幕上 } } ``` ## 4-4-3:範例實作-控制 LED 燈 ```c= #include <SoftwareSerial.h> // 引入函式庫以便使用軟體序列通訊 const int RX_PIN = 9; // 定義RX引腳,連接到藍牙的TX引腳 const int TX_PIN = 10; // 定義TX引腳,連接到藍牙的RX引腳 SoftwareSerial BLS(RX_PIN, TX_PIN); // 設定藍牙模組的RX和TX引腳 char key; // 宣告key變數 void setup() { pinMode(11, OUTPUT); // 紅燈設定為輸出 pinMode(12, OUTPUT); // 黃燈設定為輸出 pinMode(13, OUTPUT); // 綠燈設定為輸出 Serial.begin(9600); // 初始化序列通訊 BLS.begin(9600); // 初始化軟體序列通訊 } void loop() { if (BLS.available()>0) // 如果藍牙模組有數據可讀取 { key = BLS.read(); // 讀取一個字節並存入key變數 Serial.print("key = "); // 打印字符串"key = "到序列監視器 Serial.println(key); // 打印變數key的值到序列監視器 } switch (key) // 根據接收到的key值進行對應操作 { case 'E': // 如果key為'E' case 'e': // 或為'e' RED(); // 執行RED函式,使紅燈亮 break; // 跳出switch語句 case 'F': // 如果key為'F' case 'f': // 或為'f' YELLOW(); // 執行YELLOW函式,使黃燈亮 break; // 跳出switch語句 case 'H': // 如果key為'H' case 'h': // 或為'h' GREEN(); // 執行GREEN函式,使綠燈亮 break; // 跳出switch語句 case 'G': // 如果key為'G' case 'g': // 或為'g' ALL(); // 執行ALL函式,使全部燈亮 break; // 跳出switch語句 default: // 如果key為其他值 STOP(); // 執行STOP函式,使全部燈熄滅 break; // 跳出switch語句 } } void RED(void) //紅燈亮函式 { digitalWrite(11, HIGH); // 紅燈亮 digitalWrite(12, LOW); // 黃燈熄 digitalWrite(13, LOW); // 綠燈熄 } void YELLOW(void) //黃燈亮函式 { digitalWrite(11, LOW); // 紅燈熄 digitalWrite(12, HIGH); // 黃燈亮 digitalWrite(13, LOW); // 綠燈熄 } void GREEN(void) //綠燈亮函式 { digitalWrite(11, LOW); // 紅燈熄 digitalWrite(12, LOW); // 黃燈熄 digitalWrite(13, HIGH); // 綠燈亮 } void ALL(void) //全部燈亮函式 { digitalWrite(11, HIGH); // 紅燈亮 digitalWrite(12, HIGH); // 黃燈亮 digitalWrite(13, HIGH); // 綠燈亮 } void STOP(void) //全部燈熄滅函式 { digitalWrite(11, LOW); // 紅燈熄 digitalWrite(12, LOW); // 黃燈熄 digitalWrite(13, LOW); // 綠燈熄 } ``` --- 贊助單位:財團法人耀登炳南教育基金會 ![螢幕擷取畫面 2024-07-08 145517](https://hackmd.io/_uploads/rJkkVfKv0.png)