解决Arduino的IRremote库与电机库冲突的问题
现象是,当用如下语句开启红外接收器时,某个电机就不转了:
irrecv.enableIRIn();
而注释掉这句话,电机又好了。
这问题其实不复杂,但是遇到的人很多,网上也没查到什么正经的解决方案,所以整理下自己的经验。
问题的原因很简单,电机库(我用的是AF_Motor)与红外库(IRremote)用的定时器冲突了,需要改掉其中的一个。我改的是IRremote 。具体来说,就是修改 IRremoteInt.h 头文件(注意不是 IRremote.h 文件):
// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc
#else
#define IR_USE_TIMER1 // tx = pin 9
//#define IR_USE_TIMER2 // tx = pin 3
把这里本来的 TIME2 改成 TIMER1 即可
注1) 别改错文件,因为Arduino自己也带有一个库。具体用的是哪个文件,可以看编译信息。
注2) 我的UNO板,所以是改这里。其他的板子应该改各自对应的地方。
注3) 据说改完后IDE要重启。
irrecv.enableIRIn();
而注释掉这句话,电机又好了。
这问题其实不复杂,但是遇到的人很多,网上也没查到什么正经的解决方案,所以整理下自己的经验。
问题的原因很简单,电机库(我用的是AF_Motor)与红外库(IRremote)用的定时器冲突了,需要改掉其中的一个。我改的是IRremote 。具体来说,就是修改 IRremoteInt.h 头文件(注意不是 IRremote.h 文件):
// Arduino Duemilanove, Diecimila, LilyPad, Mini, Fio, Nano, etc
#else
#define IR_USE_TIMER1 // tx = pin 9
//#define IR_USE_TIMER2 // tx = pin 3
把这里本来的 TIME2 改成 TIMER1 即可
注1) 别改错文件,因为Arduino自己也带有一个库。具体用的是哪个文件,可以看编译信息。
注2) 我的UNO板,所以是改这里。其他的板子应该改各自对应的地方。
注3) 据说改完后IDE要重启。
还没人转发这篇日记
丁丁虫的最新日记 · · · · · · ( 全部 )
- 转发赠书《中国绘画:元至清》 (104人喜欢)
- 转发赠书《雅克·德里达访谈录》 (112人喜欢)
- 转发赠书《侥幸求生》 (104人喜欢)
- 转发赠书《我很正常》 (97人喜欢)
- 转发赠书《钓蛤蟆的少年》 (88人喜欢)
热门话题 · · · · · · ( 去话题广场 )
-
加载中...