# 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); // 綠燈熄
}
```
---
贊助單位:財團法人耀登炳南教育基金會
