gpt4 book ai didi

c - Arduino 上的并行执行

转载 作者:行者123 更新时间:2023-11-30 15:40:51 25 4
gpt4 key购买 nike

假设我想控制 2 个输出:

应发送 PWM 调制信号 (50Hz)。另一个应该发送音频信号(比如说正弦信号)(比如说 2kHz)。

这两个任务之一很容易完成:只需循环运行即可:

  1. 发送一些值到输出
  2. 延迟执行几毫秒并再次跳转到1.

但是如何解决发送 2 个信号的问题(假设使用不同的环路频率,如我们的示例 - 50Hz- 2kHz)?

最佳答案

我不确定输出正弦信号需要什么,但这是我对解决方案的看法。首先,我了解您所拥有的:

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库占用一个计时器并使用中断来进行更新。

关于c - Arduino 上的并行执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20802752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com