学习使用Raspberry Pi上的GPIO引脚将为您带来无限可能。通过初学者项目学习的基本原理为DIY电子和编程的实用知识铺平了道路。
本教程将向您展示两种向Raspberry Pi项目添加按钮的方法。该按钮将用于控制LED。视频下方提供了书面说明。
您将需要
要开始使用,请确保您具有以下组件:
一旦收集,您应该具有如下所示的组件:
您还需要安装Raspbian操作系统的SD卡。最快的方法是使用NOOBS(全新的开箱即用软件)映像。该视频中提供了有关如何执行此操作的说明:
设置电路
您将使用Pi的GPIO引脚来制作电路,如果您不熟悉,通过它们,我们的Raspberry Pi GPIO引脚指南将有所帮助。这里的电路与我们之前的Raspberry Pi LED项目几乎相同,只是增加了您今天要使用的按钮。
根据下图设置电路:
设置,如下所示:
检查电路以确保其正确,然后打开Raspberry Pi的电源。
方法1:RPi.GPIO库
启动Pi后,转到菜单并选择 Programming> Thonny Python IDE 。将打开一个新的Python脚本。如果您是Python的新手,那么它是适合初学者的好语言,并且在完成本教程后,有很多不错的地方来学习有关Python的更多信息!
首先导入RPi.GPIO库,并设置板模式。
import RPi.GPIO as GPIOGPIO.setmode(GPIO.BOARD)
现在声明LED和按钮引脚号的变量。
ledPin = 12buttonPin = 16
请注意,因为我们将板模式设置为 BOARD 我们正在使用引脚号而不是GPIO号。如果您对此感到困惑,则可以通过Raspberry Pi引脚分布图来清除它。
是时候设置GPIO引脚了。将LED引脚设置为输出,将按钮引脚设置为具有上拉电阻器
GPIO.setup(ledPin, GPIO.OUT)GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.IN之后的文字表示该引脚的内部上拉电阻器树莓派。您需要启用它才能从按钮上获得清晰的读数。由于该按钮将连接到接地引脚,因此我们需要一个上拉电阻将输入引脚保持为高电平,直到您按下它为止。
在继续操作之前,我们先来看一下上拉和下拉
When you configure a GPIO pin to input, it reads that pin to determine its state. In this circuit, you need to read whether a pin is HIGH or LOW to trigger the LED when the button is pressed. This would be simple if those were the only states a pin can have, but unfortunately, there is a third state: FLOATING.
一个浮动引脚的值介于高电平和低电平之间,从而导致输入的行为异常。上拉/下拉电阻器解决了这个问题。
上图是按钮和Raspberry Pi的简化图。 GPIO引脚通过按钮接地。内部上拉电阻将GPIO引脚连接到内部Pi电源。该电流流动,并且该引脚被安全地拉高。
按下按钮时,GPIO引脚直接连接到接地引脚,并且该按钮读为低电平。
下拉电阻器用于将开关连接到电源引脚的情况。这次,内部电阻器将GPIO引脚接地,并保持低电平,直到您按下按钮为止。
上拉和下拉电阻器理论乍一看令人困惑,但重要的知识是与微控制器一起工作。现在,如果您不太了解它,请不要担心!
让我们继续我们停下来的地方。
接下来,设置程序循环:
while True: buttonState = GPIO.input(buttonPin) if buttonState == False: GPIO.output(ledPin, GPIO.HIGH) else: GPIO.output(ledPin, GPIO.LOW)
while True 循环会持续运行其中的代码,直到我们结束程序为止。每次循环时,它都会通过读取 buttonPin 的输入来更新 buttonState 。当未按下按钮时,它保持高。
按下按钮后, buttonState 将变为 LOW 。这会触发 if语句,因为 False 与 LOW 相同,并且LED点亮。 else 语句在buttonPin不为False时关闭LED。
通过单击 File> Save As 并选择一个文件名来保存脚本。您可以通过单击Thonny工具栏中的绿色 Play 按钮来运行草图。
现在按一下按钮,您的LED将会亮起!随时按红色的停止按钮停止程序
如果遇到困难,请彻底检查代码和电路设置是否存在错误,然后重试。
方法2:GPIO零库
RPi.GPIO库非常棒,但该模块上有个新手。 GPIO零库是由Raspberry Pi社区经理Ben Nuttall创建的,其目的是使代码更简单,更易于读写。
要测试新库,请打开一个新的Thonny文件,然后导入
from gpiozero import LED, Buttonfrom signal import pause
您会注意到您没有导入整个库。由于仅使用LED和按钮,因此脚本中仅需要这些模块。我们还从信号库(用于事件管理的Python库)导入暂停。
使用GPIO零设置引脚容易得多:
led = LED(18)button = Button(23)
由于GPIO零库具有用于LED和按钮的模块,因此您无需像以前那样设置输入和输出。您会注意到,尽管引脚没有改变,但此处的数字与上面的数字有所不同。这是因为GPIO零仅使用GPIO引脚号(也称为Broadcom或BCM编号)。
脚本的其余部分只有三行:
button.when_pressed = led.onbutton.when_released = led.offpause()
pause()调用此处只是在脚本到达底部时停止退出脚本。只要按下并释放按钮,就会触发两个按钮事件。保存并运行脚本,您将看到与以前相同的结果!
向Raspberry Pi添加按钮的两种方法
在设置按钮的两种方法中, GPIO Zero方法似乎是最简单的。由于大多数初学者Raspberry Pi项目都使用RPi.GPIO库,因此仍然值得学习。就像这个项目一样简单,这些知识可以用于很多事情。
使用GPIO引脚是学习和发明自己的设备的好方法,但是它远远超出了您可以做的一切。 Pi。我们的Raspberry Pi非正式指南。
标签: DIY项目教程 GPIO Python Raspberry Pi