遇到的bug问题
程序员文章站
2022-04-26 12:10:30
...
1.扩展板的引脚
2.Tone方法 与 红外遥控方法 发生冲突
这个错误提示表面上是说在红外库里定义过的函数在Tone里又重复定义了,实际原因是红外库和Tone都使用了相同的内部计时器TIMER2(在各自的ISR函数里),换名字是不解决根本问题的。如果你不熟悉avr的中断处理函数ISR,修改哪一方都不靠谱,考虑下面的Tone的替代办法:
arduino的几个延时函数都是用的timer 0。这里有个不用timer2而用延时函数的发声函数,用它替代Tone应该可以避开与红外库的计时器冲突:
void newtone(byte tonePin, int frequency, int duration) {
int period = 1000000L / frequency;
int pulse = period / 2;
for (long i = 0; i < duration * 1000L; i += period) {
digitalWrite(tonePin, HIGH);
delayMicroseconds(pulse);
digitalWrite(tonePin, LOW);
delayMicroseconds(pulse);
}
}
转自:https://www.geek-workshop.com/forum.php?mod=viewthread&tid=4037
上一篇: 内存管理(一)
推荐阅读
-
mysql 导出select语句结果到excel文件遇到问题及解决方法
-
Java使用for循环解决经典的鸡兔同笼问题示例
-
C# WinForm程序完全退出的问题解决
-
Android 处理OnItemClickListener时关于焦点颜色的设置问题
-
Java常见问题之javac Hello.java找不到文件的解决方法
-
C# KeyUp事件中MessageBox的回车(Enter)键回调问题解决方案
-
ASP.NET基于Ajax的Enter键提交问题分析
-
解决spring boot 1.5.4 配置多数据源的问题
-
iOS系统和微信中不支持audio自动播放问题的解决方法
-
iOS 10拨打系统电话弹出框延迟出现问题的解决