模块熟悉

第 11 课·视频:光敏传感器

用手一遮,数字就变——最直观的模拟输入

光敏是最适合入门模拟输入的模块。原因很简单:你用手一遮,数字立刻变,因果关系一眼就能看见。

视频教程光敏传感器:接线、读光照值、设阈值下载 ↗

看的时候注意三件事

第一,又是四根线,还是只用一根。

跟麦克风一样,它有 AODO

针脚 含义 我们用它吗
AO 模拟量,光越强数值越大 ✅ 用这个
DO 数字量,比某个亮度暗/亮才翻转
GND
VCC 电源

光敏、热敏、麦克风这三个模块,丝印一模一样(都是 AO DO GND VCC),长得也像,特别容易拿混。区分方法:光敏顶上是个有花纹的小圆片(光敏电阻),热敏顶上是个玻璃珠,麦克风顶上是个圆形金属咪头。

第二,注意数字的范围。

模拟输入读出来是 04095 之间的一个数。这是 12 位 ADC 的范围——为什么是这个范围,后面自测题会问。

第三,注意遮住和放开,数字变化的幅度。

视频里那个变化幅度很大,所以你很容易找到一个阈值:比它亮就算白天,比它暗就算晚上。

什么叫"阈值"

阈值就是一条你自己画的线

阈值就是自己画的一条线,读数高于它算亮,低于它算暗

程序不会自己知道"多亮算亮"。你得告诉它:读数大于 2000,就算亮;小于 2000,就算暗。 那个 2000 就是阈值。

阈值定在哪儿,是你决定的,而且要看环境。

  • 白天在窗边测,可能读数都在 3000 以上,阈值定 2000 就太低了
  • 晚上在台灯下测,可能读数只有 800,阈值定 2000 就永远触发不了

所以正确的做法是:先跑一遍,看看你这里的实际范围,再定阈值。 这就是为什么视频里我要先"遮一下、放一下"给你看范围。

自测

单选题模拟输入读出来的数值范围,一般是?
单选题光敏读数一直是 4095 不动,把灯关了也不变,最可能是什么原因?
问答题为什么阈值不能照抄教程里的数字?
拓展ADC 的 4095 是怎么来的?为什么不是 1000 或者 10000?

这个问题课上不讲,留给你自己找答案——**问 AI 是最好的办法**。

提示:搜"ADC 分辨率 位数"、"12 位 ADC 什么意思"。算一算 2 的 12 次方是多少,再想想如果换成 8 位会损失什么。

拓展为什么 ESP32 的 ADC 读数会"飘"?有没有办法让它更稳?

这个问题课上不讲,留给你自己找答案——**问 AI 是最好的办法**。

提示:搜"ESP32 ADC 非线性 校准"、"ADC 多次采样 平均"。想一想:在代码里连续读 10 次取平均,能不能让数字看起来稳定一些?

本节你要动手做的事

  • [ ] 接好线:VCC3.3VGNDGNDAO一个模拟引脚GPIO0~GPIO5
  • [ ] 跑程序,用手遮住放开,看数字范围
  • [ ] 记下你的环境里"最亮"和"最暗"分别是多少
  • [ ] 取一个中间值当阈值,让它"天黑了就亮灯"
  • [ ] 做完自测题