【问题标题】:mapping analog value to pwm signal within condintional在条件范围内将模拟值映射到 pwm 信号
【发布时间】:2021-02-19 23:13:03
【问题描述】:

我正在尝试使用操纵杆来控制两个 LED 的亮度(最终将被步进电机取代)。 X 轴上操纵杆的静止模拟值是 504,最小值和最大值当然分别为 0 和 1023。我的目标是使用条件来确定要点亮哪个 LED,以及它应该有多亮。随着模拟值接近 1023,它应该会变得更亮。当模拟值接近 0 时,另一个灯泡的亮度应该会增加。

这是目前为止的相关代码:

 if (xVal < 500) {
  analogWrite(7, map(xVal, 0, 500, 255, 0));
 }
 else if (xVal > 510) {
  analogWrite(6, map(xVal, 510, 1023, 0, 255));
 }

如果该值大于 510,则它的行为符合要求。亮度逐渐增加,直到达到最大值 1023。

但是,对于少于 500 的情况,该行为不起作用。它只是在真实时实现最大亮度,无需调整 PWM。如果我理解映射功能正确,它不应该将模拟值 0 映射到最大 PWM 值吗?

【问题讨论】:

    标签: arduino pwm arduino-c++


    【解决方案1】:

    答案很简单,实际上不属于代码问题。我是一个 arduino 菜鸟,我意识到引脚 7(对于小于条件)不支持 PWM。我将其更改为引脚 5,它开始工作。我还选择修改 map 函数以使其更合理。

      analogWrite(5, map(xVal, 500, 0, 0, 255));
     }
    

    这就是我改变它的方式。使用映射反转值,我认为翻转第一个范围比 PWM 范围更有意义。

    【讨论】:

      猜你喜欢
      • 2011-05-23
      • 2020-11-16
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-11-26
      • 2016-11-28
      • 2020-03-03
      • 1970-01-01
      相关资源
      最近更新 更多