首页 文章

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

提问于
浏览
2

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

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

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

谢谢你!

1 回答

  • 3

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

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

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

相关问题