我有一个关于 Arduino 的一般性问题,如何每秒使用 AnalogRead() 读取传感器值一定次数。说每秒 10 次,并且还连续向电机输出 PWM。
如果我尝试在我的 loop() 中延迟,它会影响我与 AnalogWrite() 一起使用的 PWM 到电机。有没有办法做到这两点?
另外,对于 AnalogRead() 我想控制采样频率,比如每秒 10 次或每秒 20 次,我该怎么做?
非常感谢!
我有一个关于 Arduino 的一般性问题,如何每秒使用 AnalogRead() 读取传感器值一定次数。说每秒 10 次,并且还连续向电机输出 PWM。
如果我尝试在我的 loop() 中延迟,它会影响我与 AnalogWrite() 一起使用的 PWM 到电机。有没有办法做到这两点?
另外,对于 AnalogRead() 我想控制采样频率,比如每秒 10 次或每秒 20 次,我该怎么做?
非常感谢!
您想查看 Arduino IDE 中的“立即闪烁”示例。
阅读示例草图后您会更好地理解的简短答案是,您根据 millis() 的最近和先前返回值之间的差异执行模拟读取 () 调用,并且您执行任何 PWM 更改,因为它们是需要。由于analogRead() 返回非常快,只要您不在任何地方使用delay(),它们就不会干扰PWM 操作。
请记住,millis() 的返回值是无符号的,因此如果您使用无符号变量存储来自 millis() 的返回值,则两个连续返回值之间的差值始终为正。由于一秒钟有 1,000 毫秒,每当连续两次调用 millis() 之间的差异大于 100 时,您就会再读取一次。为确保每秒保持接近 10 个值,请将“前一个”毫秒值增加 100,而不是用实际读数替换“前一个”值。