公告
  
欢迎回来!目前功能升级完毕,
本站限时免费查看资料,请尽快注册账号,后续将限制游客访问~

朕已阅

首页 动态 版块 商城 我的
 退出
游客  
等级:
金币:
经验值:

【编程入门教程一】Python控制LED灯 开启/关闭以及闪烁 树莓派Pico RP2040

  5814 
 0
 9
RASPI   ydxhuo.com 

前言:点亮一颗LED灯也是学习编程入门的第一步,在本节教程内你将学习认识LED灯的组成,以及在单片机上如何写简单的Python代码来控制一颗LED灯,这对于你之后用Python程序控制各种硬件都有非常大的启蒙。


一:认识LED灯二极管

LED 二极管,即发光二极管(Light-emitting diode,LED),是一种能够将电能化为可见光的半导体器件。核心部分是由 P 型半导体和 N 型半导体组成的晶片,在两种半导体之间有一个过渡层,称为 P-N 结。P 型半导体也称为空穴型半导体,空穴浓度远大于自由电子浓度;N 型半导体也称为电子型半导体,自由电子浓度远大于空穴浓度。


当给 LED灯 加上正向电压(P 区接正极,N 区接负极)时,外加电压削弱内建电场,自由电子从 N 区被推向 P 区,空穴从 P 区被推向 N 区,PN 结导通电流。注入到对方区域的少数载流子与所在区域的多数载流子相遇并复合,电子从导带跃迁回价带,其损失的能量以光子形式释放,从而实现发光。光子的波长(颜色)由半导体材料的带隙宽度决定。

ImageImage



不同的半导体材料可发出不同颜色的光,如 GaAs 可发出红外光,AlGaAs、AlInGaP 等可发出红光,GaP(掺氮)等可发出黄光 / 绿光,GaN、InGaN 等可发出蓝光 / 紫外光。白光则主要通过蓝光 LED 激发荧光粉或 RGB 三基色混合两种方法实现。

二:硬件连接

将LED灯的长脚正极接线到GP0,短脚负极接线到GND。 我们通过编程来控制GP0引脚输出电压信号,能实现控制LED灯!

Image

三:Python编程

1.点亮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的闪烁快慢。


Image



2.在添加按键功能,实现打开/关闭/闪烁(以下代码已注释中文,可自行学习)

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的闪烁快慢)


Image


四:总结

通过以上的两个Python代码,我们学习通过控制主板GP0引脚来输出高低电平,就能点亮LED灯,同时加入循环函数延时功能就能控制LED灯多大闪烁效果, 第二个代码更在基础上加入了按键功能,来实现自定义功能性控制。




技术支持(对本页存在疑难问题可联系我们工程师)

联系人:张工
电话:0755-32914578
QQ:2251000002
微信:扫下方二维码添加,请备注来意

提供:人工智能,IOT物联网,工控数显,嵌入式软硬件开发,科创教育,产品定制,生产,方案解决...



标签:
作者签名:    楼主  2025-08-18 21:24:44
回复列表
Powered by YDXHUO _VERSION
© 2017-2026 跃动芯火版权
您的IP: 216.73.216.47 , 2026-01-27 14:32:38
Powered by YDXHUO _VERSION
© 2017-2026 跃动芯火版权
(9) 分享
分享

请保存二维码或复制链接进行分享

取消
已有0次打赏