arduino - 将模拟值映射到条件内的 pwm 信号
问题描述
我正在尝试使用操纵杆来控制两个 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 菜鸟,我意识到引脚 7(对于小于条件)不支持 PWM。我将其更改为引脚 5,它开始工作。我还选择修改地图功能以使其更明智。
analogWrite(5, map(xVal, 500, 0, 0, 255));
}
这就是我改变它的方式。使用映射来反转值,我认为翻转第一个范围比 PWM 范围更有意义。
推荐阅读
- html - Check if variable, function, method is available/set to avoid error
- python - class function Callback is not accessed
- android - How to reference libraries inside an APK, building an Android image
- r - Hiding output of stepAIC in Rmarkdown
- r - load hundreds of dataset from Github in R
- javascript - sqlite read DB - reference sql.js library with locate file
- firebase - 使用外系统的 Firebase 推送通知
- python - 如何使用时间戳索引遍历熊猫数据框?
- java - 跟踪 Kafka 中的高延迟
- swift - CoreData • 使用 NSPersistentCloudKitContainer 时如何执行轻量级迁移?