在基于 Leonardo 板的 Arduino Esplora 上,驱动 RGB LED 的红色组件的引脚 5 的 PWM 支持看起来与该tone
功能共享一个定时器。这会产生意想不到的后果,即在播放音调后使 Red 组件变得无用,因为它的行为变得不可预测。
这是一个演示问题的简单setup
例程:
void setup()
{
//analogWrite(5, 255);
//delay(1000);
analogWrite(5, 1);
delay(2000);
Esplora.tone(440);
delay(1000);
Esplora.noTone();
}
这会将 LED 的红色通道打开到其最低设置并保持两秒钟,然后播放 440 HZ 音调 1/4 秒,但一旦音调开始,LED 不会保持低亮度,而是打开完全关闭。
如果您取消注释前两行,这一次当音调开始时,而不是像以前那样(不正确地)关闭,它现在(同样不正确地)恢复为全亮度。
在调用tone
.
我的猜测是为声音生成适当的 HZ,tone
更改定时器的设置,然后影响 PWM 功能。如果我能找到如何手动重置计时器以再次正确支持 LED 的 PWM,那可能就是解决方案。但是我是 Arduino、计时器等的新手,所以这纯粹是猜测,我可能对这种方法或我对它的理解完全错误,但从我读过的内容来看,这似乎是朝着正确的方向发展.
那么有人知道如何在该引脚上恢复正确的 PWM 功能吗?
标记