---
###### tag:`Arduino` `Analog`
---
# Arduino 電路實驗 快速類比 I/O
[TOC]
系級:資工三乙
座號:16
姓名:王君翔
指導老師:林宏益
---
## 實驗壹 滑動式電位計與大功率LED
### 1.實驗目的
透過實際操作電路,並實作程式碼,了解滑動式電位計與輸入類比輸入之關係。
---
### 2.實驗原理
透過讀取滑動式電位計之類比訊號輸入之大小,改變LED燈之亮度。
#### LED燈之特性曲線
|  |  |
|:---------------------------------------------:|:---------------------------------------------:|
| LED順向特性曲線 | 照度特性曲線 |
---
### 3.實驗材料
| 名稱 | 數量 | 備註 |
| -------- | -------- | -------- |
| Arduino uno板 | 1 | 附USB線 |
| KTduino 積極體驗板 | 1 | |
| 杜邦線 | 2 | 公對公 |
* 以下簡稱KTduino 積極體驗板為體驗板
---
### 4.實驗步驟
1. 將以下腳位連接:
| 來源板子 | 來源位置 | 連接板子 | 連接位置 | 備註 |
| -------- | -------- | -------- | -------- | -------- |
| 體驗板 | P8 | Uno板 | 6 | 連接LED |
| 體驗板 | P7-1 | Uno板 | A2 | 連接滑動式電位計 |
2. 將以下程式完成後,透過USB線上傳至Uno板。
``` C=
const int LED = 6, POT = A2; //pins
int val = 0; //tmp analog Value
void setup(){
pinMode(LED, OUTPUT); //set pin mode
}
void loop(){
val = analogRead(POT); //scan input
analogWrite(LED, (val >> 2)); //output
}
```
3. 在體驗板上進行操作,並紀錄實驗結果。
---
### 5.實驗結果

Δ電位計位置偏右

Δ電位計位置偏左
可以觀察到,透過改變電位計之位置來改變輸出,確實有影響LED之亮度,符合預期結果。
----
## 實驗貳 電壓量測
### 1.實驗目的
透過實際操作電路,並實作程式碼,以Arduino測量電路電壓。
---
### 2.實驗原理
透過讀取滑動式電位計之類比訊號輸入之大小,透過類比訊號之換算,得到電壓大小。
---
### 3.實驗材料
| 名稱 | 數量 | 備註 |
| -------- | -------- | -------- |
| Arduino uno板 | 1 | 附USB線 |
| KTduino 積極體驗板 | 1 | |
| 杜邦線 | 1 | 公對公 |
| 三用電表 | 1 | |
* 以下簡稱KTduino 積極體驗板為體驗板
---
### 4.實驗步驟
1. 將以下腳位連接:
| 來源板子 | 來源位置 | 連接板子 | 連接位置 | 備註 |
| -------- | -------- | -------- | -------- | -------- |
| 體驗板 | P7-1 | Uno板 | A0 | 連接滑動式電位計 |
2. 將以下程式完成後,透過USB線上傳至Uno板。
``` C=
const int POT = A0; //pin
int val = 0; //tmp analog value
float vol = 0; // voltage value
void setup(){
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop(){
val = analogRead(POT); // scans the analog value
vol = val * 5. / 1023.; // converts analog to voltage
Serial.println(vol); // output
delay(200); // waits 0.2s
}
```
3. 在體驗板上進行操作,並紀錄實驗結果。
---
### 5.實驗結果
|  |  |
| -------- | -------- |
| 三用電壓測量 | Serial視窗顯示 |
Δ電位計位置偏右
| | |
| -------- | -------- |
| 三用電壓測量 | Serial視窗顯示 |
Δ電位計位置偏中
|  |  |
| -------- | -------- |
| 三用電壓測量 | Serial視窗顯示 |
Δ電位計位置偏左
可以觀察到,三用電表及Serial之輸出雖有誤差,但仍然受到滑動式電位計之控制。
---
## 實驗參 聲音量測
### 1.實驗目的
透過實際操作電路,並實作程式碼,了解透過麥克風之感測所得到的類比訊號輸入。
---
### 2.實驗原理
透過讀取麥克風之類比訊號輸入之大小,顯示在Serial視窗。
---
### 3.實驗材料
| 名稱 | 數量 | 備註 |
| -------- | -------- | -------- |
| Arduino uno板 | 1 | 附USB線 |
| KTduino 積極體驗板 | 1 | |
| 杜邦線 | 1 | 公對公 |
* 以下簡稱KTduino 積極體驗板為體驗板
---
### 4.實驗步驟
1. 將以下腳位連接:
| 來源板子 | 來源位置 | 連接板子 | 連接位置 | 備註 |
| -------- | -------- | -------- | -------- | -------- |
| 體驗板 | P20-1 | Uno板 | A0 | 連接麥克風 |
2. 將以下程式完成後,透過USB線上傳至Uno板。
``` C=
const int MIC = A0; //pin
int val = 0, _val = 0; //tmp value
void setup(){
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop(){
val = analogRead(MIC); // scans analog signal
if(val != _val){ //if the signal changed
Serial.write(val); //shows new value
_val = val;
}
delay(200); //waits
}
```
3. 在體驗板上進行操作,並紀錄實驗結果。
---
### 5.實驗結果

Δ電路圖

Δ輸出結果
透過麥克風感測周遭音量,有影響到Serial之輸出,但因周遭環境過於吵雜無法準確控制。
---
## 實驗肆 PC調光燈
### 1.實驗目的
透過實際操作電路,並實作程式碼,讀取Serial之輸入,並控制類比訊號輸出,與使用者互動。
---
### 2.實驗原理
透過讀取Serial之使用者輸入,改變類比訊號之輸出,控制LED燈之亮度。
---
### 3.實驗材料
| 名稱 | 數量 | 備註 |
| -------- | -------- | -------- |
| Arduino uno板 | 1 | 附USB線 |
| KTduino 積極體驗板 | 1 | |
| 杜邦線 | 1 | 公對公 |
* 以下簡稱KTduino 積極體驗板為體驗板
---
### 4.實驗步驟
1. 將以下腳位連接:
| 來源板子 | 來源位置 | 連接板子 | 連接位置 | 備註 |
| -------- | -------- | -------- | -------- | -------- |
| 體驗板 | P8 | Uno板 | ~3 | 連接LED |
2. 將以下程式完成後,透過USB線上傳至Uno板。
``` C=
const int LED = 3; // pin
int in = 0, pwm = 0; // tmp value
void setup(){
pinMode(LED, OUTPUT); // set pin mode
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop(){
if(Serial.available()){ // if there is any char typed
in = Serial.read(); // gets input
if(in > 47 && in < 58){ // check input char is available
pwm = map((in&15), 0, 9, 0, 255); // convert
Serial.print("PWM: ");
Serial.println(pwm); // print pwm value
analogWrite(LED, pwm); // output
}else{
Serial.println("unavailable!!"); // received an unavailable input
}
}
delay(200); // waits 0.2s
}
```
3. 在體驗板上進行操作,並紀錄實驗結果。
---
### 5.實驗結果
| 圖片 | |  |  |
| -------- | -------- | -------- | -------- |
| 輸入 | 0 | 5 | 9 |
ΔLED亮度

Δ輸出電壓
可以觀察到,透過改變Serial輸入來改變輸出,確實有影響LED之亮度,符合預期結果。
---
## 實驗心得
這種實驗相較於上一次來的簡單許多,也有餘力多做幾個,希望之後可以保持這個步調繼續學習。
---
## 參考文獻
* 艾迪諾 2017 Arduino全能微處理機實習-強效解析第四版第三章 全華圖書股份有限公司