假设我想控制2个输出:
应发送PWM调制信号(50Hz)。另一个应该发送一个音频信号(比如一个正弦信号)(比方说2kHz)。
这两项任务中的一项很简单:只需循环运行:
但是你如何解决发送2个信号的问题(比方说不同的环路频率,如我们的例子 - 50Hz-2kHz)?
答案 0 :(得分:1)
我不确定输出正弦信号需要什么,但这是我对解决方案的看法。首先,我理解你的内容:
void loop() {
update_pwm_output();
delay(1000/50); // 50 Hz
}
可能的解决方案:
int last_update = 0;
void loop() {
int mill = millis();
if (mill-last_update > (1000/50)) {
last_update = mill;
update_pwm_output();
}
}
此解决方案允许您在更新PWM信号之间执行其他代码。
在运行其他代码时,有几种方法可以保持PWM更新。我使用的库SoftwareServo允许您定期调用其refresh()
方法并且它将更新,其中Servo库占用一个计时器并使用中断来执行它的更新。