微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将模拟值映射到条件内的 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 范围更有意义。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。