SlideShare a Scribd company logo
1 of 12
Download to read offline
電子工程系車用電子與資訊組
Arduino程式除錯
吳錫修
sswu@nkut.edu.tw
February 6, 2018
認識bug、序列埠監控視窗、序列繪圖器、
Serial輸出指令
shapethefuture
 大多數的bug是因為程式設計考慮不夠周詳所致,當然功能愈複雜
的程式,程式中潛藏錯誤的機率也相對較高
 語法錯誤 (syntax error):程式敘述不符合語法規範,例如:遺漏標點符
號、變數命名不正確 (與保留字相衝突)、未宣告函式庫標頭檔...
 執行時期錯誤 (run time error):程式執行時發生了系統能辨識的
「Trappable Error」,例如記憶體空間不足、除數為0…
 邏輯錯誤 (semantic error):程式的作業邏輯不正確而造成的錯誤,例
如除法運算時,忽略了餘數的處理,使作業結果暗藏錯誤
 除錯 (debug) 就是找出程式中的錯誤,微控制器除錯作業主要偏重
在語法錯誤及邏輯錯誤
程式bug
2 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 選單命令File>Preferences
 Settings頁面勾選Display line numbers
顯示行號
3 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 點擊Verify,驗證程式語法
語法錯誤處理 1/2
4 Wu, ShyiShiou Dept. of E.E., NKUT
複製錯誤訊息
錯誤訊息
自動跳到第一個錯誤行
shapethefuture
 解讀錯誤訊息
語法錯誤處理 2/2
5 Wu, ShyiShiou Dept. of E.E., NKUT
Blink程式檔第9行
錯誤說明,Low未宣告
發現錯誤處
Blink程式檔第11行
錯誤說明,在'}'之前應該要有';'
發現錯誤處
shapethefuture
 Arduino並沒有專用的除錯工具,只能透過輸出訊息來查核程式執
行結果
 序列埠監控視窗 (Serial Monitor)
 序列繪圖器 (Serial Plotter)
邏輯錯誤處理
6 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 序列埠監控視窗是⼀個透過序列埠和Arduino微控制器溝通的工具
程式
 選單命令Tools>Serial Monitor
使用Serial Monitor 1/2
Wu, ShyiShiou Dept. of E.E., NKUT7
訊息區
傳輸速率 (必須與Arduino程式所設定的速率一致)
shapethefuture
 Arduino程式必須設定序列埠傳輸速率
 Serial.begin(傳輸速率);
 Arduino程式中可使用下列指令輸出訊息到序列埠監控視窗
 Serial. print(輸出訊息);
 Serial.println(輸出訊息);
 二者用法相同,差別在於println()輸出訊息後會自動換行
使用Serial Monitor 2/2
Wu, ShyiShiou Dept. of E.E., NKUT8
shapethefuture
 設定輸出數字格式
 Serial.println(整數值, 格式碼);
 格式碼:DEC(10進位)、HEX(16進位)、OCT(8進位)、BIN(2進位)
 Serial.println(23, BIN); //輸出10111
 設定小數點位數 (四捨五入)
 Serial.println(3.4567); //預設小數點2位,輸出3.46
 Serial.println(3.14159, 0); //不輸出小數點,輸出3
 Serial.println(3.14159, 3); //小數點3位,輸出3.457
Serial.println()
9 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 序列繪圖器會自動描繪所接收到的數值資料
 選單命令Tools>Serial Plotter
 只能搭配Serial.println()指令
使用Serial Plotter
10 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 實驗目的
 熟用Serial Monitor及Serial Plotter觀察開關狀態變化
Lab 使用Serial plotter除錯 1/2
11 Wu, ShyiShiou Dept. of E.E., NKUT
shapethefuture
 參考程式
#define SW 8
void setup() {
pinMode(SW, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
Serial.println(digitalRead(SW));
}
Wu, ShyiShiou Dept. of E.E., NKUT12
Lab 使用Serial plotter除錯 2/2

More Related Content

More from 吳錫修 (ShyiShiou Wu)

Unity遊戲程式設計 - 2D Platformer遊戲
Unity遊戲程式設計 - 2D Platformer遊戲Unity遊戲程式設計 - 2D Platformer遊戲
Unity遊戲程式設計 - 2D Platformer遊戲吳錫修 (ShyiShiou Wu)
 
Unity遊戲程式設計 - 2D移動與碰撞處理II
Unity遊戲程式設計 - 2D移動與碰撞處理IIUnity遊戲程式設計 - 2D移動與碰撞處理II
Unity遊戲程式設計 - 2D移動與碰撞處理II吳錫修 (ShyiShiou Wu)
 
Unity遊戲程式設計 - 2D運動與碰撞處理I
Unity遊戲程式設計 - 2D運動與碰撞處理IUnity遊戲程式設計 - 2D運動與碰撞處理I
Unity遊戲程式設計 - 2D運動與碰撞處理I吳錫修 (ShyiShiou Wu)
 
Unity遊戲設計- 2D動畫製作及應用
Unity遊戲設計-  2D動畫製作及應用Unity遊戲設計-  2D動畫製作及應用
Unity遊戲設計- 2D動畫製作及應用吳錫修 (ShyiShiou Wu)
 

More from 吳錫修 (ShyiShiou Wu) (20)

micro:bit開關控制應用
micro:bit開關控制應用micro:bit開關控制應用
micro:bit開關控制應用
 
Vuforia AR 應用程式設計入門
Vuforia AR應用程式設計入門Vuforia AR應用程式設計入門
Vuforia AR 應用程式設計入門
 
Vuforia AR 應用程式準備作業
Vuforia AR應用程式準備作業Vuforia AR應用程式準備作業
Vuforia AR 應用程式準備作業
 
micro:bit LED顯示控制
micro:bit LED顯示控制micro:bit LED顯示控制
micro:bit LED顯示控制
 
IDE for micro:bit
IDE for micro:bitIDE for micro:bit
IDE for micro:bit
 
Microbit 1 introduction
Microbit 1 introductionMicrobit 1 introduction
Microbit 1 introduction
 
Arduino overview
Arduino overviewArduino overview
Arduino overview
 
使用Makeblock App學習mBot程式設計
使用Makeblock App學習mBot程式設計使用Makeblock App學習mBot程式設計
使用Makeblock App學習mBot程式設計
 
使用M部落App學習mBot程式設計
使用M部落App學習mBot程式設計使用M部落App學習mBot程式設計
使用M部落App學習mBot程式設計
 
nodeMCU IOT教學03 - NodeMCU導論
nodeMCU IOT教學03 - NodeMCU導論nodeMCU IOT教學03 - NodeMCU導論
nodeMCU IOT教學03 - NodeMCU導論
 
nodeMCU IOT教學02 - Lua語言
nodeMCU IOT教學02 - Lua語言nodeMCU IOT教學02 - Lua語言
nodeMCU IOT教學02 - Lua語言
 
Unity遊戲程式設計 - 2D Platformer遊戲
Unity遊戲程式設計 - 2D Platformer遊戲Unity遊戲程式設計 - 2D Platformer遊戲
Unity遊戲程式設計 - 2D Platformer遊戲
 
Unity遊戲程式設計 - 2D移動與碰撞處理II
Unity遊戲程式設計 - 2D移動與碰撞處理IIUnity遊戲程式設計 - 2D移動與碰撞處理II
Unity遊戲程式設計 - 2D移動與碰撞處理II
 
Unity遊戲程式設計 - 2D運動與碰撞處理I
Unity遊戲程式設計 - 2D運動與碰撞處理IUnity遊戲程式設計 - 2D運動與碰撞處理I
Unity遊戲程式設計 - 2D運動與碰撞處理I
 
Python與Ardinio整合應用
Python與Ardinio整合應用Python與Ardinio整合應用
Python與Ardinio整合應用
 
mBlock積木式設計程式
mBlock積木式設計程式mBlock積木式設計程式
mBlock積木式設計程式
 
Unity遊戲設計- 2D動畫製作及應用
Unity遊戲設計-  2D動畫製作及應用Unity遊戲設計-  2D動畫製作及應用
Unity遊戲設計- 2D動畫製作及應用
 
Unity遊戲設計- 應用Sprite物件
Unity遊戲設計- 應用Sprite物件Unity遊戲設計- 應用Sprite物件
Unity遊戲設計- 應用Sprite物件
 
Arduino程式快速入門
Arduino程式快速入門Arduino程式快速入門
Arduino程式快速入門
 
開發mBot應用程式
開發mBot應用程式開發mBot應用程式
開發mBot應用程式
 

Arduino程式除錯