按钮开关是一种简单而有效的输入设备,通常用于启动或停止过程,控制LED或触发事件等项目。本教程将带您通过将按钮开关连接到Raspberry Pi,设置接线并编写Python脚本以检测按钮按下。
你需要什么
- 覆盆子pi (任何具有GPIO支持的模型,例如PI 3,PI 4)
- 按钮开关
- 面包板和跳线电线
- 电阻 (10kΩ用于下拉)
- 安装了Python 在你的覆盆子pi上
- GPIO库 用于控制覆盆子Pi的GPIO引脚
步骤1:将按钮接线到Raspberry Pi
按下按钮开关可以通过将GPIO引脚连接到高(3.3V)状态时,或在不按下时将其拉到低(0V)。我们将使用下拉电阻器来确保当按钮不按下时GPIO引脚读取较低。
接线按钮
按钮销 | 覆盆子Pi Gpio Pin |
---|---|
一个别针 | GPIO17(引脚11) |
其他针 | 地面(引脚6) |
一个别针 | 10kΩ电阻到地面 |
这是布线设置:
- 将按钮的一个端子连接到 GPIO17 (引脚11)。
- 将按钮的另一个终端连接到 地面 (引脚6)。
- 在之间连接10kΩ电阻 GPIO17 和 地面 充当下拉电阻。
这样可以确保按下按钮时,GPIO17读取高(3.3V),并且当不按下时,电阻器将GPIO17拉到低(0V)。
步骤2:在Python中启用GPIO引脚
-
首先,更新Raspberry Pi的包装列表:
sudo apt update sudo apt upgrade -y
-
安装所需的Python GPIO库(如果尚未安装):
sudo apt install python3-rpi.gpio
-
在您的Python脚本中导入库:
import RPi.GPIO as GPIO import time
步骤3:编写Python代码
现在,让我们编写一个Python脚本以检测何时按下按钮并相应地采取行动。
Python代码示例
import RPi.GPIO as GPIO
import time
# Set up the GPIO mode and pin
GPIO.setmode(GPIO.BCM) # Use BCM numbering
button_pin = 17 # GPIO pin connected to the button
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # Set up pin with pull-down resistor
# Function to detect button press
def button_callback(channel):
print("Button was pressed!")
# Set up an event on the button pin
GPIO.add_event_detect(button_pin, GPIO.RISING, callback=button_callback, bouncetime=300)
try:
print("Press the button...")
while True:
# Keep the program running to wait for button press
time.sleep(0.1)
except KeyboardInterrupt:
print("Program exited")
finally:
GPIO.cleanup() # Clean up GPIO to ensure a clean exit
代码说明:
- gpio.setmode(gpio.bcm):将GPIO引脚编号设置为BCM(BroadCom)模式。
- gpio.setup(button_pin,gpio.in,pull_up_down = gpio.pud_down):将按钮引脚配置为带有下拉电阻器的输入,这意味着当不按下时它将读取低。
-
gpio.add_event_detect():检测GPIO PIN的上升边(按钮按)并触发回调功能
button_callback
按下按钮时。 - 时间。:保持脚本运行,允许其等待按钮按下。
- gpio.cleanup():当脚本退出时清理GPIO设置。
步骤4:测试按钮
-
运行您的Python脚本:
python3 button.py
-
按下按钮并观察消息“按下按钮!”在终端。
步骤5:应用程序
以下是使用项目中的按钮的一些想法:
- 控制LED:使用按钮打开和关闭LED。
- 触发事件:启动或停止进程(例如,启动电动机,打开风扇或启动脚本)。
- 聪明的门铃:使用按钮作为门铃将通知发送到手机。
- 用户输入:获取项目的简单用户输入(例如“是/否”答案)。
故障排除
-
按钮未检测到:
- 确保与下拉电阻正确连接到按钮。
- 仔细检查代码中的GPIO PIN设置。
-
GPIO错误:
- 确保正确安装了GPIO库,并且脚本中的PIN号是正确的。
-
按钮弹跳:
- 如果您注意到检测到多个按钮,则可以添加访问时间(
bouncetime=300
在脚本中)避免错误检测。
- 如果您注意到检测到多个按钮,则可以添加访问时间(
结论
使用Raspberry Pi使用按钮开关是向您的项目添加输入功能的一种简单方法。无论是切换LED,触发事件还是与其他硬件进行交互,这种简单的设置都可以成为许多有趣的应用程序的基础。尝试不同的GPIO引脚并进行审核设置,以满足您的需求!