https://developer.canaan-creative.com/zh/products
了解更多的micropython控制产品
5-1 光敏电阻
光敏电阻是一种对光线敏感,其电阻值会随光照强度改变的电子元件,在诸多领域有广泛应用,像小米、飞利浦等品牌的智能照明系统都有应用。
5-2光敏电阻特性及电路连接
用 Pico 的 3.3V 作为供电电源,把电路里的电阻 A 换成光敏电阻,电阻 B 换成 220Ω 的固定电阻。周围环境的光线越亮,光敏电阻的电阻值就越小,它分到的电压也越小,这样一来,电路中 C 点测到的电压就越大;要是挡住光线,情况就反过来了。大家先弄明白光敏电阻在光线变化时和电压、电阻的关系,后面的实验会去测量 C 点的电压。
数字输入与模拟输入的区别
在数字输入的情况下,信号只有高电位(True)和低电位(False)两种状态;模拟电压变化可不是只有这两种,而是连续变化的,像 1V、2.1V 这些都有可能,这种连续变化的信号叫做模拟信号。
==ADC(模拟到数字的转换器)==
想要检测出光敏电阻引起的电压变化,就得用到 ADC(模拟数字转换器),它能把模拟的电压值,转换成程序可以读取的数字值。
5-3 程序流程图与代码
程序流程图
程序开始 -> 导入模块 -> 设定 GP26_A0 管脚为 ADC 输入方式,输入值小于 3000 吗?-> 是-> 打开 LED 灯,否->关闭LED灯。
程序代码:
import machine
import time
# 初始化模拟输入引脚,对应原代码的 A0 引脚
adc = machine.ADC(machine.Pin(26)) # RP2040 中 A0 对应 GPIO 26
# 初始化 LED 引脚,对应原代码的 GP15 引脚
led = machine.Pin(15, machine.Pin.OUT)
while True:
# 读取模拟输入值
adc_value = adc.read_u16()
if adc_value < 3000: # 光线不足时
led.value(1) # 打开 LED 灯
else:
led.value(0) # 关闭 LED 灯
time.sleep(0.1) # 适当延时,避免 CPU 占用过高