---
# System prepended metadata

title: Arduino範例實作解答

---

# 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)

