2015年7月12日 星期日

error: 'TKD2' was not declared in this scope

新版的 Arduino IDE 在使用 IR Library 時會編譯錯誤,如下圖:


導致錯誤的原因是因為在 IRremoteTools.cpp 裡面沒有宣告 'TKD2' 變數。

歸根究底的原因是新版的 IDE 會讀取內建的紅外線函式庫,而這個內建的紅外線函式庫是專為 Adafruit 公司產品訂製的,如果你沒有該公司的產品可能就無法使用它的函式庫。


那麼該如何解決這個問題呢? 

解決辦法有很多種,其中一種是去修改 RobotIRremote.cpp,但這個方法對於不熟悉 C 語言的人來說似乎是有點困難,有可能會愈弄愈糟。

另一種辦法是用其他可用的紅外線函式庫取代內建的 RobotIRremote Library,此舉應該是最簡單又安全的作法了。

下載 IR Library https://github.com/coopermaa/Arduino-IRremote/archive/master.zip

下載後解壓縮,將資料夾名稱更改為「IRremote」,然後複製到 [Arduino]\libraries 路徑下,再重新啟動 Arduino IDE 即可。

你也可以把 Robot_Control、Robot_Motor 和 RobotIRremote 這幾個資料夾移除掉,這樣並不會影響紅外線函式庫的運作。


檢查新的紅外線函式庫是否正常運作

我們可以開啟內建的範例程式:

1. 點擊下拉功能表 File > Examples > IRremote > IRrecvDemo

2. 點擊工具列的 Upload 按鈕。

成功編譯,如下圖:









沒有留言:

張貼留言