SlideShare a Scribd company logo
電子工程系車用電子與資訊組
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

PDF
Arduino程式除錯
PDF
Arduino程式除錯
PDF
Arduino程式開發工具
PDF
Arduino應用程式開發工具
PDF
Python 编程艺术
PDF
Vuforia AR影片程式設計
PDF
micro:bit亮度感測應用
PDF
Vuforia AR 同時追踨多張辨識圖
Arduino程式除錯
Arduino程式除錯
Arduino程式開發工具
Arduino應用程式開發工具
Python 编程艺术
Vuforia AR影片程式設計
micro:bit亮度感測應用
Vuforia AR 同時追踨多張辨識圖

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

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

Arduino程式除錯