00:00 / 07:53
连播
清屏
智能
倍速
点赞15
果核所2周前
你有没有发现,玩硬件编程时,有些元件只能设0或1,像开关一样;有些却能调亮度,从0到255;而传感器读数,动不动就是0到1023?这些数字是随便定的吗?今天带你搞懂背后的硬核原理!1️⃣ 最底层:为什么只能是0和1?这得从计算机的“母语”说起。所有芯片最核心的元件是晶体管,它本质上就是一个电子开关。开关只有两种稳定状态:开(导通) 和 关(截止)。在电路里,“开”通常用高电平(比如5V)表示,记作数字 1;“关”用低电平(0V)表示,记作数字 0。所以,一个只能设为0或1的引脚,就是在直接控制这个物理开关的通断,实现最基础的“开灯/关灯”功能。2️⃣ 假装的“中间态”:为什么是0到255?想让LED变暗,而不是直接关掉?数字世界没有真正的“半开半关”,但有个绝招:PWM(脉冲宽度调制)。原理是让引脚在极短时间内高速开关。如果一秒内,亮0.5秒、灭0.5秒,平均亮度就是50%。这个“亮的时间占比”有多少档可以调呢?这由控制它的寄存器位数决定。常用的是8位,8个二进制位能表示 2的8次方 = 256 种状态(从0到255)。所以,analogWrite(pin, 128) 就是让引脚50%的时间输出高电平(1),实现“半亮”效果。3️⃣ 感知世界的“尺子”:为什么是0到1023?要读取现实世界连续变化的量(比如光线、温度),需要模数转换器(ADC)。它像一把尺子,把输入电压(例如0-5V)分成很多“刻度”。刻度越多,测量越准。这把“尺子”的精细度叫分辨率,用位数表示。Arduino UNO的ADC是 10位 的。10个二进制位能表示 2的10次方 = 1024 种状态(从0到1023)。所以,旋钮拧到一半(约2.5V),读到的数就大约是 512。这个0-1023的数字,就是连续电压被量化后的结果。🔍 总结一下:0/1:数字信号,对应物理开关的两种绝对状态。0-255:PWM模拟输出,用8位数字“假装”出256级模拟效果。0-1023:ADC模拟输入,用10位分辨率将连续电压量化为1024个数字刻度。理解这些,你就能看透代码如何驱动硬件。下次写 digitalWrite、analogWrite 或 analogRead 时,你就是在指挥一场跨越数字与模拟世界的精密对话!#计算机#单片机#Arduino#科普#编程
00:00 / 02:45
连播
清屏
智能
倍速
点赞15
00:00 / 02:27
连播
清屏
智能
倍速
点赞8
00:00 / 02:07
连播
清屏
智能
倍速
点赞7
00:00 / 03:54
连播
清屏
智能
倍速
点赞3233
00:00 / 02:44
连播
清屏
智能
倍速
点赞16
00:00 / 09:48
连播
清屏
智能
倍速
点赞18
00:00 / 07:43
连播
清屏
智能
倍速
点赞1
00:00 / 01:27
连播
清屏
智能
倍速
点赞13
00:00 / 01:15
连播
清屏
智能
倍速
点赞154
00:00 / 01:50
连播
清屏
智能
倍速
点赞20
00:00 / 00:35
连播
清屏
智能
倍速
点赞17
00:00 / 02:26
连播
清屏
智能
倍速
点赞NaN
00:00 / 02:39
连播
清屏
智能
倍速
点赞130