2

我有一个关于 Arduino 的一般性问题,如何每秒使用 AnalogRead() 读取传感器值一定次数。说每秒 10 次,并且还连续向电机输出 PWM。

如果我尝试在我的 loop() 中延迟,它会影响我与 AnalogWrite() 一起使用的 PWM 到电机。有没有办法做到这两点?

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

非常感谢!

4

1 回答 1

3

您想查看 Arduino IDE 中的“立即闪烁”示例。

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

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

于 2012-04-30T04:29:21.823 回答