# 即時呈現Arduino數據-PLX-daq v2
本文介紹如何使用最簡單的PLX-daq v2匯入Arduino數據,進行簡單的視覺化數據呈現。不過只有呈現我自己實驗的範例~所以像Arduino主板、Sensor的不同都會有不同的結果,需要的話可以再多找找幾篇來看!
## 需要程式/工具
### 軟體
1. Arduino IDE
2. PLX-DAQ version.2
### 硬體
1. Arduino Uno
2. Sensor
* 因為我需要的是ECG/EMG/GSR sensor,所以已經先寫了demo code,後面加入PLX-DAQ分析就沒有那麼困難。
## PLX-DAQ 操作方式
* 找到[PLX-DAQ的載點](https://forum.arduino.cc/t/plx-daq-version-2-now-with-64-bit-support-and-further-new-features/420628),進入後下載 "PLX-DAQ-v2.zip" 檔。
* 進行解壓縮,解壓縮後的檔案,內含
* Beginner's guide:說明如何使用PLX-DAQ
* Excel:已連接好Arduino和PLX-DAQ的Excel範例檔案
* 打開Excel檔,啟用巨集讓GUI介面(操作介面)出現,依據自己Arduino的設定,照著填入PLX-DAQ的介面中。
* Port:序列埠位置,即Arduino輸入用哪個COM
* Baud:Baud rate,要記得跟Arduino code輸入同一數值,通常9600是極限(115200會爆)
* Connect:設定完成後,即可按下與Arduino連線,數據會自動匯入Excel
* Pause logging:暫停匯入數據
* Custom Checkbox:基本上可以不用動
* Reset Timer:重新計時,但之前存的資料還在
* Clear Columns:清空所有資料
* Display direct debug:呈現PLX-DAQ的執行狀況,可以看是哪裡出錯才會導致無法匯入資料
* Simple data:下拉選單中有Further,是Excel檔案左下角的不同資料集,不過我只用到Simple Data而已
* Controller messages:呈現PLX-DAQ的執行狀況,類似debug模式的最後一行(現在正在做什麼)
## 和 Arduino 溝通
知道如何調整PLX-DAQ的介面之後,就來看怎麼樣讓Arduino跟PLX-DAQ溝通吧!
溝通方式就是在Arduino裡面,利用 `println` 寫一些指令,讓PLX-DAQ可以辨識到該存什麼、什麼時候開始要存取資料,這樣就能把資料丟進去。
### 建立資料欄位
#### 辨識字元:LABEL
* Code:
* `Serial.println("LABEL, Name1, Name2, ...., NameN")`
* 輸入LABEL後,PLX-DAQ就知道,之後輸入的Name1、Name2就是照順序的欄位名稱,需要用逗點隔開才能辨別是不同欄位
#### 清空整張工作表(含欄位名稱)
* Code:
* `Serial.println("CLEARSHEET")`
### 匯入Arduino數據至Excel
#### 辨識字元:DATA
* Code:
* 先輸入`Serial.print("DATA")`
* 接下來輸入`Serial.print(",")`
* 後面接著你想要照順序存在欄位裡的東西即可,但絕對要記得前面必須要有`Serial.print(",")`,否則下一個值,會一併存在上一個欄位裡面。逗號可以分到下一行寫,或者直接寫成`Serial.print("DATA, Value1, Value2")`也可以
* 常用內建字串:
* `Serial.print("DATA, DATE")`:會直接抓今天日期匯入Excel
* `Serial.print("DATA, TIME")`:會直接抓現在時間匯入Excel
* `Serial.print("DATA, TIMER")`:會從開始執行PLX-DAQ時開始計時,匯入持續秒數到Excel
### 範例程式
我是需要測皮膚電阻的改變,所以這個程式碼是專門給GSR-sensor的,以下僅供參考~
```javascript!
const int GSR=A1;
int sensorValue=0;
void setup() {
Serial.begin(9600);
Serial.println("CLEARSHEET");
Serial.println("LABEL, Date, Time, GSR_value");
}
void loop() {
long sum=0;
sensorValue= analogRead(GSR);
Serial.print("DATA, DATE, TIME");
Serial.print(",");
Serial.println(sensorValue);
delay(500);
}
```
不過倒是可以注意`delay()` 的設置,取樣頻率太高的話,PLX-DAQ會自動關掉,完全存不到數據,設定`delay(100)`有失敗過,所以之後都設定500了。如果需要更長期、更大量的觀測數據的話,我想PLX-DAQ真的沒辦法這麼操勞哈哈哈
總之,PLX-DAQ提供了很不錯的Arduino數據儲存,也能透過Excel來轉成想要的圖表,視覺化的結果總是讓人有成就感,也比較好觀察~雖然不能像Matlab做到頻譜分析、不過簡單的測量還是有做出效果的,如果只想簡單看看趨勢的話,這是個很不賴的工具歐٩(˃̶͈̀௰˂̶͈́)و