當使用Arduino IDE 1.5.7時(應該早自1.5.5 r2便有此錯誤),若想使用紅外線程式庫IRremote,光是底下這短短的草稿碼:
#include <IRremote.h>
void setup() {
}
void loop() {
}
就會出現底下的編譯錯誤訊息(若選擇「Arduino Robot Control」以外的板子):
path-to-arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope
int RECV_PIN = TKD2; // the pin the IR receiver is connected to
原因在於,Arduino IDE 1.5.5 r2開始加入一套縮減版的IRremote程式庫,名為RobotIRremote,更動了不少東西,但有些地方卻沒變(譬如檔名),以至於起衝突。
此錯誤的詳細情況,大致如此:想使用自行安裝的IRremote,但Arduino IDE卻以內建的RobotIRremote為優先;RobotIRremote的檔案IRremoteTools.cpp需要TKD2的腳位定義,而只有「Arduino Robot Control」板子的腳位定義檔裡才有TKD2這玩意兒,如此一來,就會發生上述的錯誤訊息。
解決之法:
- 若你想使用自己安裝的IRremote,而且不是使用Arduino Robot Control板子,那就乾脆把path-to-arduino-1.5.x\libraries\RobotIRremote整個移除算了。
- 也可以自行更改RobotIRremote裡的檔名,並連帶修改相關程式碼,解決衝突;較為困難,屬於暫時性解法,照理說應該由Arduino官方開發團隊修改。
- 若想使用內建的RobotIRremote,目前似乎只有Arduino Robot Control板能用;要不然就要自己修改程式庫。
參考資料:
好像Arduino的Library都很容易跟Robot相關的部分衝到
ReplyDelete我在使用adafruit的Library時也有衝到的情況
哦,請問有例子嗎?
Deletehttp://qmaw.pixnet.net/blog/post/386285501
ReplyDelete您好,這是我自己在使用adafruit的library時,遇到的狀況,也是需要把Robot的相關函式都刪掉才有辦法編譯成功。
我剛用Arduino IDE 1.5.8試了你網頁裡說的程式庫,並無錯誤耶。
Delete嗯,奇怪。
剛剛試了一下,1.5真的有解掉這問題,感謝您。
Delete我剛用1.0.6試了,也沒有錯誤耶。
Delete囧~我的剛好是1.0.5r2,國外的論壇是建議沒在用Robot板子的話,就刪掉跟robot有關的資料夾。
Delete我剛用1.0.5 r2試了,也沒有錯誤耶。
Delete剛剛我用1.0.5 r2,又編了一次,有下面這些Error,但是1.0.6 & 1.5都沒這問題,可以直接編過。不過也有可能我的1.0.5裝了其他的lib導致衝突。
DeleteC:\arduino-1.0.5-r2\libraries\Robot_Control\ArduinoRobot.cpp:18: error: 'MUXB' was not declared in this scope
C:\arduino-1.0.5-r2\libraries\Robot_Control\ArduinoRobot.cpp:18: error: 'MUXC' was not declared in this scope
C:\arduino-1.0.5-r2\libraries\Robot_Control\ArduinoRobot.cpp:18: error: 'MUXD' was not declared in this scope
C:\arduino-1.0.5-r2\libraries\Robot_Control\ArduinoRobot.cpp:19: error: 'MUX_IN' was not declared in this scope
C:\arduino-1.0.5-r2\libraries\Robot_Control\ArduinoRobot.cpp:22: error: 'BUZZ' was not declared in this scope
C:\arduino-1.0.5-r2\libraries\Robot_Control\ArduinoRobot.cpp:25: error: 'Serial1' was not declared in this scope
嗯,應該是跟Adafruit_GFX起衝突。
Delete不過我並無發生這些錯誤,嗯,真奇怪。
Delete1.6 Got the same issue.
ReplyDelete