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

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

相关推荐
ACP广源盛1392462567314 小时前
GSV2221@ACP# DP1.4 MST 多流显示转换芯片国产工业多屏
大数据·人工智能·分布式·嵌入式硬件·spark
ACP广源盛1392462567314 小时前
GSV2231@ACP# 增强型 8K MST 多屏扩展芯片
大数据·人工智能·分布式·嵌入式硬件
国科安芯1 天前
航天器多路并联大功率电源系统设计与ASP4644均流特性分析
单片机·嵌入式硬件·fpga开发·安全性测试
茯苓gao1 天前
嵌入式开发笔记:CANopen相关移位运算与通信协议术语详解
网络·嵌入式硬件·学习·信息与通信
梁朝辉1 天前
STM32H750VBT6中ADCINP与INN什么区别
stm32·单片机·嵌入式硬件
省四收割者1 天前
一文详解信号完整性(1)
python·嵌入式硬件·数学建模·信息与通信·信号处理·智能硬件
崇山峻岭之间1 天前
单片机无感FOC驱动之ADC
单片机·嵌入式硬件
Ligocious1 天前
1.点亮一颗小小的LED
单片机·嵌入式硬件
KaifuZeng2 天前
通信与接口协议面试八、CAN通信
单片机·嵌入式硬件·面试·通信与接口协议
智源单片机设计2 天前
基于单片机的直流电机双闭环调速系统设计
单片机·嵌入式硬件