眾所周知,Arduino開發板是一款便捷靈活、方便上手的開源電子原型平臺,它構建于開放原始碼simple I/O介面版,并且具有使用類似Java、C語言的Processing/Wiring開發環境。能通過各種各樣的傳感器來感知環境,通過控制燈光、馬達和其他的裝置來反饋、影響環境,因此應用比較廣泛。但在使用過程中容易出現一些錯誤,下面一起來看看:

圖1: Arduino開發板
1.無法識別Arduino開發板
這是指計算機無法識別連接到計算機的Arduino開發板的情況。發生這種情況時,該板通常不會列在Arduino IDE的端口列表下,有時會在設備管理器下標記為USB2.0。

圖2: 無法識別Arduino板
解決方案
當使用某些使用CH340g USB 到串行轉換器芯片,而不是FTDI (FT232RL) 和標準Arduino開發板使用的其他芯片的廉價Arduino 克隆時,就會發生這種情況。標準Arduino開發板使用的USB轉串行芯片驅動程序始終與Arduino IDE 安裝文件一起打包,因此當安裝IDE時,驅動程序會自動安裝到PC上。為了能夠使用這個基于CH340g USB 到串行轉換器的Arduino開發板,必須下載并安裝該芯片的驅動程序。可以從此鏈接下載驅動程序,安裝它就像單擊下面顯示的安裝界面上的安裝按鈕一樣簡單。

圖3: Arduino開發板上連接的端口
完成此操作后,現在應該能夠在Arduino IDE上找到板所連接的端口。
2. 板子不同步
通常,發生這種情況時,將無法將代碼(盡管IDE有時會顯示“已上傳”)上傳到Arduino開發板,并且IDE將顯示錯誤代碼;“ avrdude:stk500_getsync():不同步:resp=0x00 ”。
解決方案
不同步:RESP = 0×00是翻譯為“一個通用響應的Atmega芯片不工作的Arduino的”。當這種情況發生時,有很多事情可能是錯誤的。以下是可用于清除此錯誤的一些步驟。
①確保Arduino(包括屏蔽)上的數字引腳0和1沒有任何連接。
②確保在工具菜單下選擇了正確的通訊端口和板卡。
③按Arduino上的重置按鈕幾次并重新上傳代碼。
④斷開Arduino與PC的連接并重新連接。
⑤重啟Arduino IDE。
如果其中任何一個不起作用,可能是時候嘗試在PC上使用不同的Arduino開發板,或者在另一臺PC上使用“有故障”的Arduino開發板。如果發現問題出在PC上,請重新安裝Arduino IDE。但是,如果“有故障”的Arduino開發板是問題的根源,最終的解決方案是使用Arduino固件刷新板。如果上述方法均無效,則可能是需要更換Arduino開發板了。
3. 代碼在電源復位時不啟動
這指的是Arduino在通電時不運行上傳到它的草圖的情況,并且在大多數情況下,只是恢復到與引導加載程序關聯的閃爍草圖。
解決方案
就像處理的其他問題一樣,有很多因素可能會導致這種情況。
如果開發板死機并且什么也不做,應該檢查代碼以確保沒有在它出現時向開發板發送串行數據。當Arduino打開時,引導加載程序在最初的幾秒鐘內偵聽計算機向它發送一個新的草圖以上傳到電路板。如果沒有收到新的草圖,不久后,引導加載程序將超時并運行上傳到板上的最后一個草圖。如果代碼在前幾分鐘發送串行數據,則引導加載程序不會超時,并且上載到板上的最后一個草圖也不會啟動。
如果在開發板一啟動就發送串行數據是項目的重要組成部分,可能需要找到一種方法來給它一些延遲,以阻止串行數據在Arduino啟動時立即到達。如果進行調整會影響項目要執行的任務,那么可能必須使用外部編程器將草圖上傳到電路板,因為引導加載程序可以被它們繞過。
如果電路板沒有死機但返回到Arduino閃爍草圖(引腳13上的LED 時不時閃爍),一個簡單的解決方法是使用Arduino引導加載程序刷新開發板,因為開發板上的引導加載程序可能已損壞.
4. 無效的設備簽名錯誤
當嘗試將代碼上傳到與在Arduino IDE 上的工具>開發板列表下選擇的開發板不同的開發板時,會顯示此錯誤。發生此錯誤的原因通常是目標板上的設備簽名與IDE上選擇的板的簽名不同。

圖4: 無效的設備簽名錯誤
解決方案
解決此錯誤的方法很簡單,只需確保在Arduino IDE 上選擇正確的開發板即可。如果這不起作用,則可能需要使用最新版本的Arduino引導加載程序刷新微控制器。
5. Launch4j 錯誤
Arduino IDE 在加載之前和加載時有時需要一段時間,如果單擊任何內容,它將顯示Launch4J 錯誤,如上所示。Launch4j是一種用于將Java應用程序(jar)包裝在Windows本機可執行文件中的工具,允許它們用作常規的Windows程序。
Arduino IDE本身是用JAVA編寫的,此錯誤是由于Arduino IDE 提供的Java運行時環境(JRE) 庫的不兼容而發生的。

圖5: Launch4j錯誤
解決方案
根據經驗,可以通過關閉PC的藍牙或WiFi連接這樣簡單的方法來清除此錯誤。但是,更完整和永久的解決方案是用最新版本替換Arduino包中的JRE。
6. 串口已使用
這可能是最容易解決的錯誤之一。當您在串行監視器打開時嘗試將代碼上傳到Arduino 時(如果使用最新的IDE 版本,這不再是問題),或者當嘗試在Arduino與其他軟件或設備通信時啟動串行監視器時,通常會發生這種情況通過串口。本質上,當嘗試將Arduino串行端口同時用于兩個不同的事情時,就會發生這種情況。

圖6: 串口已使用
解決方案
就像IDE建議的那樣,關閉可能使用com端口的所有其他軟件/工具(包括串行監視器/繪圖儀)。如果不確定特定軟件,請拔下Arduino。當將其插回時,它應該已準備就緒。
7.Sketch上傳成功但沒有任何反應
此錯誤類似于上面已經處理的一些其他錯誤。對于此錯誤,Arduino IDE 會提示代碼已成功上傳,但開發板什么也不做。
解決方案
確保在IDE中選擇的板與目標板相同。這可能是草圖尺寸大于電路板容量的結果。檢查草圖尺寸并使用上面提到的一些方法來減小尺寸。最后,當使用嘈雜的電源時,可能會發生此錯誤。確保電源足夠穩定。
8. 不滿意鏈接錯誤
這可能是進入此列表的唯一罕見錯誤。當PC上有舊版本的通信庫時會發生這種情況,很可能來自以前的安裝。
解決方案
要解決此錯誤,請在/System/Library/Frameworks/JavaVM.framework/或PC的CLASSPATH或PATH環境變量的目錄中搜索 comm.jar 或 jcl.jar 。
9. 草圖太大
當代碼大于該特定Arduino開發板的閃存時,會發生此錯誤。例如,Arduino Uno的閃存大小為32Kb,其中2KB已被Arduino引導加載程序使用。如果您應該上傳大小大于32Kb的代碼,Arduino將顯示此警告。

圖7: 草圖太大
解決方案
如上所述,當您的草圖大于您正在使用的特定開發板的閃存時,就會發生這種情況,因此,要解決此問題,必須找到減少代碼占用空間量的方法。實現這一目標的一些技巧包括:
①在可能的情況下,使用整數數據類型代替浮點數。
②在聲明變量時,盡可能使用“const”限定符。
③僅包含必要的庫。在可能的情況下,使用最重要的庫的輕量級版本。
④一般改進代碼。開發有助于使您的代碼更短且通常更輕量級的算法。
⑤一個更激進的解決方案是將項目轉移到另一個板子上,比如 Arduino Mega,與 Uno 相比,它具有更大的閃存。
10.java.lang.StackOverflowError
在處理草圖時,Arduino使用一些正則表達式進行處理,有時會在遇到某些與字符串相關的錯誤(例如缺少引號)時感到困惑。
解決方案
通過再次查看代碼,尤其是使用字符串序列的部分,可以解決此錯誤。確保引號完整,正確使用反斜杠等。
結語
以上就是使用Arduino開發板時的最常見錯誤介紹了。由于Arduino開發板的種種優勢,越來越多的專業硬件開發者已經或開始使用Arduino來開發他們的項目、產品;并且越來越多的軟件開發者使用Arduino進入硬件、物聯網等開發領域;連大學課題,自動化、軟件,甚至藝術專業,也紛紛開展了Arduino相關課程。
關注公眾號“優特美爾商城”,獲取更多電子元器件知識、電路講解、型號資料、電子資訊,歡迎留言討論。