前言:点亮一颗LED灯也是学习编程入门的第一步,在本节教程内你将学习认识LED灯的组成,以及在单片机上如何写简单的Python代码来控制一颗LED灯,这对于你之后用Python程序控制各种硬件都有非常大的启蒙。
LED 二极管,即发光二极管(Light-emitting diode,LED),是一种能够将电能化为可见光的半导体器件。核心部分是由 P 型半导体和 N 型半导体组成的晶片,在两种半导体之间有一个过渡层,称为 P-N 结。P 型半导体也称为空穴型半导体,空穴浓度远大于自由电子浓度;N 型半导体也称为电子型半导体,自由电子浓度远大于空穴浓度。
当给 LED灯 加上正向电压(P 区接正极,N 区接负极)时,外加电压削弱内建电场,自由电子从 N 区被推向 P 区,空穴从 P 区被推向 N 区,PN 结导通电流。注入到对方区域的少数载流子与所在区域的多数载流子相遇并复合,电子从导带跃迁回价带,其损失的能量以光子形式释放,从而实现发光。光子的波长(颜色)由半导体材料的带隙宽度决定。


不同的半导体材料可发出不同颜色的光,如 GaAs 可发出红外光,AlGaAs、AlInGaP 等可发出红光,GaP(掺氮)等可发出黄光 / 绿光,GaN、InGaN 等可发出蓝光 / 紫外光。白光则主要通过蓝光 LED 激发荧光粉或 RGB 三基色混合两种方法实现。
将LED灯的长脚正极接线到GP0,短脚负极接线到GND。 我们通过编程来控制GP0引脚输出电压信号,能实现控制LED灯!

from machine import Pin # 从machine模块导入Pin类,用于控制GPIO引脚
import time # 导入time模块,用于实现延时功能
led = Pin(0, Pin.OUT) # 初始化GP0引脚(物理引脚0)为输出模式,创建led对象来控制这个引脚
try: # 创建循环函数,使LED持续闪烁工作
while True:
led.value(1) # 设置LED引脚为高电平(3.3V),点亮LED
time.sleep(1) # 延时1秒,保持LED点亮状态
led.value(0) # 设置LED引脚为低电平(0V),关闭LED
time.sleep(1) # 延时1秒,保持LED关闭状态
except KeyboardInterrupt: # 点击停止按钮关闭运行
led.value(0) # 程序结束时确保LED处于关闭状态
print("程序已停止") # 打印提示信息,表明程序已停止运行上述代码后可观察LED灯的闪烁情况。可以通过修改time.sleep(1)延时时间来控制LED的闪烁快慢。

from machine import Pin # 从machine模块导入Pin类,用于控制GPIO引脚
import time # 导入time模块,用于实现延时功能
led = Pin(0, Pin.OUT) # 初始化LED引脚(GP0)为输出模式
#------------------------------------------------------
# 初始化按键引脚,设置为输入模式并启用内部上拉电阻
# 按下按键时引脚会读取到低电平(0),未按下时为高电平(1)
btn_on = Pin(22, Pin.IN, Pin.PULL_UP) # 按键A(GP22): 打开LED
btn_off = Pin(21, Pin.IN, Pin.PULL_UP) # 按键B(GP21): 关闭LED
btn_blink = Pin(20, Pin.IN, Pin.PULL_UP) # 按键C(GP20): 开启闪烁
btn_exit = Pin(19, Pin.IN, Pin.PULL_UP) # 按键D(GP19): 退出程序
led_mode = 0 # 定义LED工作模式变量 0为关闭, 1为常亮, 2为闪烁
try:
# 程序主循环
while True: # 检测退出按键是否按下(低电平)
if btn_exit.value() == 0:
print("程序已退出")
led.value(0) # 确保LED关闭
break # 退出主循环
# 检测打开LED按键是否按下
if btn_on.value() == 0:
led_mode = 1 # 设置为常亮模式
led.value(1) # 立即点亮LED
time.sleep(0.1) # 简单消抖
if btn_off.value() == 0: # 检测关闭LED按键是否按下
led_mode = 0 # 设置为关闭模式
led.value(0) # 立即关闭LED
time.sleep(0.1) # 简单消抖
if btn_blink.value() == 0: # 检测闪烁模式按键是否按下
led_mode = 2 # 设置为闪烁模式
time.sleep(0.1) # 简单消抖
if led_mode == 2: # 如果处于闪烁模式,执行闪烁逻辑
led.toggle() # 切换LED状态(亮与暗)
time.sleep(1) # 闪烁时间每1秒
else:
time.sleep(0.05) # 非闪烁模式时短暂延时,降低CPU占用
except KeyboardInterrupt: # Thonny中停止程序
led.value(0) # 确保LED关闭
print("程序已停止")
#------------------------------------------------------ 功能说明:运行上述代码后,可以按下A键为打开LED,按下B键为关闭LED,按下C键为闪烁模式,按下D键停止程序。(可以通过修改time.sleep(1)延时时间来控制LED的闪烁快慢)

通过以上的两个Python代码,我们学习通过控制主板GP0引脚来输出高低电平,就能点亮LED灯,同时加入循环函数延时功能就能控制LED灯多大闪烁效果, 第二个代码更在基础上加入了按键功能,来实现自定义功能性控制。
联系人:张工
电话:0755-32914578
QQ:2251000002
微信:扫下方二维码添加,请备注来意
提供:人工智能,IOT物联网,工控数显,嵌入式软硬件开发,科创教育,产品定制,生产,方案解决...