树莓派点亮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()

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

相关推荐
straw_hat.2 小时前
PCB学习——STM32F103VET6-STM32主控部分
stm32·嵌入式硬件·学习
hazy1k4 小时前
K230基础-显示画面
stm32·单片机·嵌入式硬件·k230
A9better10 小时前
嵌入式开发学习日志31——stm32之外部中断与定时器中断的差别与选择
stm32·单片机·学习
沐欣工作室_lvyiyi11 小时前
基于物联网的个人健康管理系统(论文+源码)
单片机·物联网·毕业设计·健康管理
蒋楼丶11 小时前
stm32和Zynq的中断抢占机制
stm32·单片机·嵌入式硬件
xyx-3v12 小时前
已知三极管的类型(NPN/PNP)和基极引脚,如何区分集电极(c)和发射极(e)
单片机·嵌入式硬件·学习
随机惯性粒子群13 小时前
STM32控制开发学习笔记【基于STM32 HAL库】
笔记·stm32·嵌入式硬件·学习
来生硬件工程师13 小时前
CH582 GPIO
c语言·开发语言·单片机
会编程的果子君15 小时前
面向对象实现LED灯
单片机·嵌入式硬件