---
# System prepended metadata

title: Arduino筆記-1
tags: [Arduino]

---

# Arduino筆記-1

## 學習內容
1. 認識Arduino
2. Arduino IDE介紹
3. 練習Arduino基本語法(輸入、輸出、延遲、函式庫)

## 認識Arduino IDE
Arduino 是一塊可以連結感測器和其他配件(例如：LED、伺服馬達)的多功能開發板，
可以搭配網路製作物聯網的功能，也可以做一些創意小玩具。

詳細教學[🔗](https://drive.google.com/file/d/1UZwBhvtnEVEHM6ueaplIFm97y0eW6jM1/view)

## IDE介紹
Arduino官方有推出自己的IDE，可以點選此[連結](https://www.arduino.cc/en/software)進行下載
![Arduino IDE ](https://hackmd.io/_uploads/HkLgDP0IR.png)
也可以使用線上版，不過還是要安裝[ Arduino Create Agent](https://cloud.arduino.cc/download-agent/)


安裝完成後將Arduino IDE開啟並連結你的開發板到電腦
點選左上角的"選擇開發板"連接你的開發板
![連結開發板](https://hackmd.io/_uploads/SydOPDRUR.png)

如果沒有看見你的開發版，
可以到[CH340驅動](https://sparks.gogo.co.nz/ch340.html)或是[FTDI 驅動](https://ftdichip.com/drivers/vcp-drivers/)尋找你的驅動並安裝

### 內建LED閃爍測試

接著進行上傳測試，將原有程式碼替換以下程式碼
```ino=
void setup() {
  pinMode(13, OUTPUT);
}
 
void loop() {
  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
  delay(500);
}
```
接著按下第一顆按鈕進行編譯
![編譯](https://hackmd.io/_uploads/HyTRFP0UC.png)

再來按下第二顆按鈕上傳編譯後的程式到開發板

![上傳](https://hackmd.io/_uploads/BkMzqvRLA.png)


如果內建LED向下圖一樣閃爍，代表開發板連接成功且正常

![內建燈泡閃爍](https://hackmd.io/_uploads/rJjY1_0UC.gif)

## 練習Arduino基本語法(輸入、輸出、函式庫)
Arduino使用的程式語言非常類似C++，
但是在輸入和輸出的地方有些差異，
接下來我們來學習一下Arduino專用的程式語言吧!

### 腳位介紹

在學習基本語法之前要先來了解開發板的腳位

將電源放置於左方，
在上方的一排腳位是屬於數位腳位，
右下角的腳位是類比輸入腳位(注意!沒有類比輸出，只有數位模擬類比輸出)，
而在類比輸入腳位左邊的則是電源(正極)和接地(負極)

部分要使用PWM (脈衝寬度調變)例如伺服馬達，
所以必須將腳位連接在3、5、6、9、10、11接腳(數字前方有標記 ~ 符號的腳位)

### 輸入
要讀取輸入內容只要先在序列埠輸入資料
接著按照你要讀取的資料型態，
選擇它的讀取方式。

以下是一個讀取序列埠字串的範例：

```ino=
void setup() {
  Serial.begin(9600);
}

void loop() {
  if (Serial.available()) { // 檢查序列埠是否有資料可供讀取
    String str = Serial.readString();
    Serial.println(str);
  }
}
```
#### 讀取字元：
如果要讀取一個字串，
可以使用 Serial.readString() 函式。
```ino=
char ch = Serial.read(); 
    Serial.println(ch);
```

#### 讀取字串：
如果要讀取一個字串，
可以使用 Serial.readString() 函式。

```ino=
String str = Serial.readString();
Serial.println(str);
```

#### 讀取整數：
如果要讀取一個整數，
可以使用 Serial.parseInt() 函式。

```ino=
int num = Serial.parseInt();
Serial.println(num);
```


#### 讀取浮點數：
如果要讀取一個浮點數，
可以使用 Serial.parseFloat() 函式。

```ino=
float f = Serial.parseFloat();
Serial.println(f);
```

### 輸出

在 Arduino 中，
輸出分為換行輸出與不換行輸出
可以使用`Serial.print()`函式進行輸出。
如果要在輸出字串的結尾添加換行符號，
可以呼叫`Serial.println()`函式。

例如：


```ino=
Serial.print("Hello, world!"); // 不換行輸出
Serial.println("Hello, world!"); // 換行輸出
```

### 延遲
Delay 為延遲指令，
時間以毫秒(0.001 秒)為單位。
`delay(500)` 表示延遲 0.5 秒。
`delay(1000)` 表示延遲 1 秒。

### 函式庫

Arduino 函式庫是預先編寫好的程式碼，可以提供特定功能。
例如，可以使用 Servo 函式庫控制伺服馬達，使用 Wire 函式庫進行通訊。

要使用函式庫，首先需要將其安裝到 Arduino IDE 中。安裝方法如下：

在 Arduino IDE 中，點選 工具 > 管理庫
在搜尋欄中輸入函式庫的名稱 > 點選 安裝
安裝函式庫後，就可以在程式中使用該函式庫的功能了。
例如，要使用 Servo 函式庫控制伺服馬達，可以先包含該函式庫的標頭檔：

```ino=
#include <Servo.h>
```

然後，就可以在程式中使用 Servo 函式庫來控制伺服馬達：