将模拟值映射到条件内的 pwm 信号

问题描述

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

这是迄今为止的相关代码

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

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

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

解决方法

答案很简单,实际上并不属于代码问题。我是 arduino 菜鸟,我意识到引脚 7(小于条件)不支持 PWM。我把它改成第 5 针,它开始工作了。我还选择修改地图功能,使其更合理。

ps.Streams.Errors

我就是这样改的。使用映射来反转值,我认为翻转第一个范围而不是 PWM 范围更有意义。