先看结论
按钮读取两种状态;电位器提供 0–1023 的模拟读数;PWM 用 0–255 调整数字脉冲占空比。这三个数值范围不能混为一谈。
数字输入回答两种状态的问题
digitalRead() 返回 HIGH 或 LOW。按钮课程中,下拉电阻使松开时的输入保持 LOW,按下按钮后输入连接到高电平。悬空的输入没有可靠的默认状态。如果采用内部上拉,接线和按下时的逻辑含义会不同。
模拟输入测量一个电平
Uno 的模拟输入将电压转换为 0–1023 的 10 位数值。旋钮课程把电位器中间的滑动端接到 A0,在课程使用的 5 V 参考条件下,读数随旋转变化。这是有分辨率限制的测量,并非无限精确的电压值。
PWM 改变的是时间比例
在 Uno 支持 PWM 的引脚上,analogWrite() 使用 0–255,改变每个周期内输出保持 HIGH 的比例。LED 看起来变暗,是因为平均获得的能量减少;信号本身仍在数字电平之间切换。PWM 不等同于真正的数模转换输出。
用一个实验连接三个概念
打开“电位器”课程,运行后对照串口读数与 LED 亮度。程序将 0–1023 的输入除以四,适配 0–255 的输出范围。尝试两端与中点,再与按钮课程的两态控制比较,解释输入、程序映射和输出之间的关系。
从实验,再多走一步
回到一手资料
真实开发板的参数与接线应以官方文档和元件数据表为准。