# 即時呈現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做到頻譜分析、不過簡單的測量還是有做出效果的,如果只想簡單看看趨勢的話,這是個很不賴的工具歐٩(˃̶͈̀௰˂̶͈́)و