树莓派资料
显示屏资料
系统下载
树莓派Pico
首页 动态 发帖 版块 我的
 退出
游客  
等级:
金币:
经验值:

GPIO输入与输出 树莓派Pico RP2040芯片外设【入门级教程】

  4253 
 0
 8
RASPI   RASPI 

Image


GPIO引脚输入与输出

树莓派 Pico有26个GPIO引脚,其中大部分都是通用输入输出引脚(GPIO),这些引脚可以配置为输入或输出模式:

输出模式:可输出高电平(3.3v)或低电平(0v)

输入模式:可读取外部信号的高低电平


1.数字输出:控制led亮灭

让我们从最基础的输出例子开始:使用输出电压来控制一颗 LED亮灭。

接线方式:LED 的正极(长脚)连接到 GP0,LED 的负极(短脚)连接到 GND


from machine import Pin
import time

# 初始化GP0为输出模式
led = Pin(0, Pin.OUT)

while True:
    led.value(1)  # 输出高电平,点亮LED
    time.sleep(1) # 延迟1秒
    
    led.value(0)  # 输出低电平,熄灭LED
    time.sleep(1) # 延迟1秒

Image

代码说明:

首先导入必要的模块:Pin 用于引脚控制,time 用于延时

创建 Pin 对象,指定引脚号(GP0)和模式(输出)

在无限循环中:

使用 value(1) 使引脚输出高电平,点亮 LED

延时 1 秒

使用 value(0) 使引脚输出低电平,熄灭 LED

再延时 1 秒


2.数字输入:读取按键输入状态

接下来我们学习如何读取数字输入,以读取A按键(GP22)输入为例,当按下时输入信号显示按键成功!

Image

from machine import Pin
import time

# 初始化GP22为输入模式,并启用内部上拉电阻
# 这样未按下时为高电平(1),按下时为低电平(0)
button_pin = Pin(22, Pin.IN, Pin.PULL_UP)

# 用于记录按键状态,避免重复触发
last_state = 1
debounce_time = 0.05  # 50ms防抖时间

print("等待按键触发...")

while True:
    # 读取当前引脚状态
    current_state = button_pin.value()
    
    # 检测到从高电平变为低电平(按键按下)
    if current_state == 0 and last_state == 1:
        print("按键成功")
        # 短暂延时防抖
        time.sleep(debounce_time)
    
    # 更新上一次状态
    last_state = current_state
    
    # 短暂延时,降低CPU占用
    time.sleep(0.01)
    

显示效果:

Image


代码说明:

引脚初始化:

我们将 GP22 配置为输入模式 Pin.IN

使用 Pin.PULL_UP 启用内部上拉电阻,这样在没有外部信号时,引脚会保持高电平

防抖处理:

加入了 50ms 的防抖时间 debounce_time,避免机械按键的抖动导致误触发

通过比较当前状态和上一次状态,只在状态变化时响应

检测逻辑:

当引脚从高电平 (1) 变为低电平 (0) 时,判定为按键按下

此时在终端打印 "按键成功" 的消息

低功耗考虑:

循环中加入了 10ms 的短暂延时,既保证了响应速度,又不会过度占用 CPU

你可以通过 Thonny IDE 运行这个程序,并在 Shell 窗口中看到 "按键成功" 的提示信息。如果需要,还可以在此基础上添加 LED 指示功能,让按键成功时 LED 点亮。



标签:
作者签名: www.raspi.cc   楼主  2024-07-09 12:57:39
回复列表
Powered by RASPI _VERSION
© 2017-2025 树莓派极客版权
您的IP: 18.97.9.171 , 2025-11-12 20:25:51
Powered by RASPI _VERSION
© 2017-2025 树莓派极客版权