树莓派点亮LED灯

通过树莓派的1和6引脚点亮LED灯是一个基础的入门实验。这里需要注意的是,接线方式和我们编程控制GPIO的常规方法略有不同。下面我将为你解释原因,并提供详细的硬件连接与代码示例。

💡 硬件连接说明

树莓派的 1号引脚 通常提供 3.3V 电源 ,而 6号引脚GND(地线)

在这种连接方式下,1号引脚(3.3V)持续供电,无法通过编程 (如设置高低电平)直接控制LED的亮灭。LED会因始终形成电流回路而常亮

若想通过编程(例如Python)控制LED的闪烁,需调整接线,将LED的正极连接到标准的GPIO引脚(如GPIO17对应物理引脚11),再通过程序控制该GPIO引脚输出高低电平。下面将给出两种常见的控制方法。

🛠️ 方法一:使用 Python 和 RPi.GPIO 库

这是较常见的方式。请注意,下面的代码示例基于调整后的接线(即LED正极通过电阻接GPIO引脚,负极接GND)。

  1. 确保已安装 RPi.GPIO 库

    树莓派系统通常自带。若无,可通过终端安装:

    bash

    复制代码
    sudo apt update
    sudo apt install python3-rpi.gpio
  2. 创建并运行Python脚本

    创建一个名为 led_blink.py 的文件,输入以下代码:

    python

    复制代码
    import RPi.GPIO as GPIO
    import time
    
    # 设置GPIO编号模式为BOARD(物理引脚编号)
    GPIO.setmode(GPIO.BOARD)
    
    # 根据调整后的接线,例如使用11号物理引脚(对应BCM GPIO17)
    # 请根据你实际连接GPIO的物理引脚号修改
    LED_PIN = 11
    
    # 设置该引脚为输出模式
    GPIO.setup(LED_PIN, GPIO.OUT)
    
    try:
        print("LED开始闪烁。按 Ctrl+C 停止。")
        while True:
            # 点亮LED
            GPIO.output(LED_PIN, GPIO.HIGH)
            print("LED点亮")
            time.sleep(1)  # 等待1秒
            
            # 熄灭LED
            GPIO.output(LED_PIN, GPIO.LOW)
            print("LED熄灭")
            time.sleep(1)  # 等待1秒
    
    except KeyboardInterrupt:
        print("\n程序被用户中断")
    
    finally:
        # 清理GPIO设置,将引脚恢复为输入模式
        GPIO.cleanup()
        print("GPIO已清理")

    在终端中,使用以下命令运行脚本(需要sudo权限以操作GPIO):

    bash

    复制代码
    sudo python3 led_blink.py

🔌 方法二:使用 Shell 脚本

也可以通过直接读写文件系统的方式控制GPIO。

  1. 创建一个Shell脚本 (例如 led_control.sh):

    bash

    复制代码
    #!/bin/bash
    
    # 指定要使用的GPIO引脚(例如BCM编号的17,对应物理引脚11)
    GPIO_BCM=17
    # 计算对应的物理引脚号(针对BOARD模式),这里以BCM 17对应物理引脚11为例
    # 实际使用时,你可能需要根据实际情况调整或直接使用BCM编号
    # 这个示例主要展示思路,使用sysfs接口操作GPIO通常使用BCM编号或gpiochip全局编号
    # 请注意:树莓派不同版本,sysfs接口使用方式可能有所不同
    
    # 启用GPIO引脚(这里以BCM编号为例,具体sysfs路径请根据你的树莓派版本调整)
    # 注意:新版本树莓派可能使用新的gpiochip机制,此示例方法可能需调整
    echo $GPIO_BCM > /sys/class/gpio/export
    sleep 1  # 等待一下确保文件生成
    
    # 设置引脚为输出
    echo out > /sys/class/gpio/gpio$GPIO_BCM/direction
    
    # 点亮LED
    echo 1 > /sys/class/gpio/gpio$GPIO_BCM/value
    echo "LED点亮"
    sleep 2  # 等待2秒
    
    # 熄灭LED
    echo 0 > /sys/class/gpio/gpio$GPIO_BCM/value
    echo "LED熄灭"
    
    # 禁用GPIO引脚
    echo $GPIO_BCM > /sys/class/gpio/unexport

    给脚本添加执行权限并运行:

    bash

    复制代码
    chmod +x led_control.sh
    sudo ./led_control.sh

    请注意:Shell脚本的方法,尤其是sysfs接口的具体使用,可能因树莓派OS版本不同而有所变化。若遇到问题,建议优先使用Python方法。

⚠️ 重要提示

  • 电阻是必须的 :LED电路中务必串联一个约220Ω至470Ω的电阻,以防损坏LED或树莓派。

  • 识别LED极性:LED长脚为正极(阳极),短脚为负极(阴极)。

  • 谨慎接线 :接线错误可能会损坏树莓派。接线或更改电路前,最好断开电源

  • GPIO清理 :Python脚本中 GPIO.cleanup() 很重要,它能在程序退出时将GPIO恢复至安全状态。

💎 总结

  • 直接将LED接在1号(3.3V)和6号(GND)引脚之间,LED会常亮,无法通过编程控制。

  • 若想用程序(如Python)控制LED闪烁,需将LED正极(通过电阻)接可编程的GPIO引脚(如物理引脚11),负极接GND(如物理引脚6)。

  • Python代码中,注意使用 sudo 运行,并处理好 GPIO.cleanup()

希望这些信息能帮助你。如果你打算调整接线以实现闪烁效果,或有其他疑问,随时可以再问我。

相关推荐
日拱一卒的小田2 小时前
ZYNQ学习笔记3-ZYNQ的IIC控制器1
笔记·单片机·学习
cardinal_5082 小时前
STM32MP157F-DK2开发板构建交叉编译链
stm32·单片机·嵌入式硬件
小羊先生car3 小时前
F429-HAL-RS485(回环/双机实验)(2026/8/16)
c语言·单片机·嵌入式硬件·软件构建
木白CPP3 小时前
Linux 驱动UART子系统源码分析
linux·运维·服务器·驱动开发·嵌入式硬件·开源软件
zlinear数据采集卡4 小时前
数据采集卡从入门到精通(10):采样率与分辨率的核心关系——反比律、架构分布与过采样
arm开发·嵌入式硬件·算法·fpga开发·架构·开源
水果里面有苹果6 小时前
33-TPS62130RGTR-3A降压器
嵌入式硬件
振南的单片机世界7 小时前
推挽vs开漏:一个“强拉硬灌”,一个“只拉不管”
arm开发·stm32·单片机·嵌入式硬件
小心亦新7 小时前
STM32学习23--I2C-1
stm32·嵌入式硬件·学习
小羊先生car8 小时前
F429-HAL-Can总线(回环及双机实验)(2026/8/15)
c语言·单片机·嵌入式硬件·软件构建
嵌入式阿蔡8 小时前
STM32时钟树详解:配错一个全乱套
c语言·stm32·单片机·嵌入式硬件