碰撞传感器是一种能够检测物体之间碰撞或接触的电子元件,广泛应用于机器人、自动化设备、汽车安全系统等领域。它的核心功能是将物理碰撞信号转换为电信号,以便控制系统做出相应反应(如停止运动、改变方向等)。
工作逻辑:传感器的内部包含弹簧、金属触点等机械结构。当传感器未受到碰撞,弹簧触点处于断开的状态,此时传感器信号引脚默认输出高电平,每当受到碰撞力时弹簧触点会闭合,此时传感器信号引脚输出低电平(如:未碰撞高电平,碰撞后为低电平)。

| 树莓派Pico | 碰撞传感器模块 |
| 3.3V | VCC |
| GND | GND |
| GPO | OUT |

已知传感器未受到碰撞输出高电平,受到碰撞后输出低电平。那么就可以写个程序来监测引脚是否有低电平输入。先将 GP0 引脚配置为输入模式启用内部上拉电阻,用来监测低电平的输入
from machine import Pin
import time
# 配置GP0引脚为输入并上拉电阻
gp0_pin = Pin(0, Pin.IN, Pin.PULL_UP)
# 循环检测
while True:
# 读取引脚信号(1为高电平,0为低电平)
pin_level = gp0_pin.value()
# 根据电平打印相应信息
if pin_level == 1:
print("GP0引脚当前为:高电平 (HIGH)")
else:
print("GP0引脚当前为:低电平 (LOW)")
# 延时1秒后再次检测
time.sleep(1)

通过以上的程序我们实现了检测传感器信号。下面在添加功能,当受到碰撞传感器输出低电平时,控制蜂鸣器报警,并且板载WS2812灯亮红色。反之亮绿色。在前面的基础上把蜂鸣器按下图接好。

下载源代码后,上传至树莓派Pico内,直接运行代码查看结果。 此时传感器受到碰撞后,蜂鸣器会报警,板载WS2812灯亮红色(如下)


该代码实现了树莓派 Pico 对 GP0 引脚输入电平的实时监测,并根据检测结果联动控制 GP16 引脚输出状态和板载 WS2812 LED 的颜色。
当 GP0 检测到低电平时:GP16 输出高电平,GP23 控制的 WS2812 LED 点亮红色
当 GP0 检测到高电平时:GP16 输出低电平,WS2812 LED 点亮绿色
仅在电平状态发生变化时执行操作,优化了系统资源占用
以 0.1 秒为间隔持续监测,兼顾响应速度和稳定性
GPIO 引脚配置与控制
输入模式(Pin.IN):如 GP0 引脚用于读取外部信号,配合内部上拉电阻(Pin.PULL_UP)确保信号稳定
输出模式(Pin.OUT):如 GP16 和 GP23 引脚用于输出控制信号,通过value()方法设置高低电平
引脚编号规则:直接使用 GP 编号(如0代表 GP0,16代表 GP16)
WS2812 LED 驱动
neopixel库:MicroPython 中专门用于控制 WS2812 等 RGB LED 的库
初始化方法:NeoPixel(引脚, 数量)创建 LED 控制对象
颜色控制:通过 RGB 三元组(0-255 范围)定义颜色,np.write()更新 LED 状态
状态检测与优化
状态变化触发:通过对比当前电平与上一次电平(current_level),仅在状态改变时执行操作,减少无效运算
延时控制:time.sleep(0.1)设置检测间隔,平衡响应速度和系统负载
数字信号特性:
高低电平表示:1 代表高电平(3.3V),0 代表低电平(0V)
信号转换:通过 GPIO 引脚实现物理电平与数字信号的转换,是单片机与外部设备通信的基础
函数封装:
将 LED 颜色设置功能封装为set_led_color()函数,提高代码复用性和可读性
常量定义:使用RED、GREEN等常量统一管理颜色参数,便于维护
这些知识点覆盖了单片机的GPIO 控制、外设驱动、程序逻辑优化等核心内容,是树莓派 Pico 开发的基础技能,可扩展应用于各类传感器交互和智能控制场景。
联系人:张工
电话:0755-32914578
QQ:2251000002
微信:扫下方二维码添加,请备注来意
提供:人工智能,IOT物联网,工控数显,嵌入式软硬件开发,科创教育,产品定制,生产,方案解决...