如何从传感器采样并同时进行PWM?

时间:2012-04-30 00:12:52

标签: arduino

我对Arduino有一个普遍的问题,我如何每秒使用AnalogRead()读取一定数量的传感器值。每秒说10次,并连续输出PWM到电机。

如果我尝试延迟循环(),它会影响我使用AnalogWrite()到电机的PWM。有办法做到这两点吗?

另外,对于AnalogRead(),我想控制采样频率,例如每秒10次或每秒20次,我该怎么办呢?

非常感谢!

1 个答案:

答案 0 :(得分:3)

您想要查看Arduino IDE中的“无延迟闪烁”示例。

在阅读示例草图后,您将更好地理解的简短答案是,您根据millis()中最近和之前返回值之间的差异执行analogRead()调用,并执行任何PWM更改因为他们是需要的。由于analogRead()返回非常快,如果不在任何地方使用delay(),它们不会干扰PWM操作。

请记住,millis()的返回值是无符号的,因此,如果使用无符号变量来存储millis()的返回值,则两个连续返回值之间的差值始终为正。由于一秒钟内有1000毫秒,因此每当两次连续调用millis()之间的差异大于100时,您需要再读一次。为确保您保持接近每秒10个值,请将“上一个”毫秒值增加100,而不是将“之前”值替换为实际读数。