学习使用Raspberry Pi上的GPIO引脚将为您带来无限可能。通过初学者项目学习的基本原理为DIY电子和编程的实用知识铺平了道路。
本教程将向您展示两种向Raspberry Pi项目添加按钮的方法。该按钮将用于控制LED。视频下方提供了书面说明。
您将需要
要开始使用,请确保您具有以下组件:
1 x Raspberry Pi(可以的话,本教程中会使用3B型)
1 x按钮
1 x LED
1 x 220欧姆电阻(更高的值没问题,您的LED就会变暗)
1 x面包板
连接电线
一旦收集,您应该拥有外观美观的组件像这样的东西:
您还需要安装Raspbian操作系统的SD卡。最快的方法是使用NOOBS(全新的开箱即用软件)映像。该视频中提供了有关如何执行此操作的说明:
设置电路
您将使用Pi的GPIO引脚来制作电路,如果您不熟悉,通过它们,我们的Raspberry Pi GPIO引脚指南将有所帮助。此处的电路几乎与我们以前的Raspberry Pi LED项目相同,只是增加了您今天要使用的按钮。
根据下图设置电路:
5v 和 GND 引脚连接到面包板的电源轨。
引脚12(GPIO 18)连接到LED的正极。
电阻的一个引脚连接到LED的负极。
Pin 16(GPIO 23)固定在按钮的一侧,另一侧固定在面包板的接地轨上。面包板的接地轨。
一旦设置好,它的外观应为:
检查
方法1:RPi.GPIO库
一旦Pi启动,请转到菜单,然后单击“确定”。选择编程》 T honny Python IDE 。一个新的Python脚本将打开。如果您是Python的新手,那么它对于初学者来说是一种很棒的语言,并且在完成本教程后,有很多不错的地方可以了解有关Python的更多信息!
首先导入RPi.GPIO库,然后设置板模式。
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
现在,声明LED和按钮引脚号的变量。
ledPin = 12
buttonPin = 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之后的文本表示内部上拉电阻。 Raspberry Pi的上拉电阻器。您需要启用它才能从按钮上获得清晰的读数。由于该按钮将连接到接地引脚,因此我们需要一个上拉电阻将输入引脚保持为高电平,直到您按下它为止。
在继续操作之前,我们先来看一下上拉和下拉
中断:上拉/下拉电阻
在将GPIO引脚配置为输入时,它将读取该引脚以确定其状态。在此电路中,您需要读取引脚是 HIGH 还是 LOW 以便在按下按钮时触发LED。如果这是引脚可以具有的唯一状态,那么这将很简单,但是不幸的是,还有第三种状态:浮动。
浮动引脚的值介于高电平和低电平之间,导致输入行为异常。上拉/下拉电阻器可以解决这个问题。
上图是按钮和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)
True 循环会不断在其中运行代码,直到结束程序。每次循环时,它都会通过读取 buttonPin 的输入来更新 buttonState 。当未按下按钮时,它保持高。
按下按钮后, buttonState 将变为 LOW 。这会触发 if语句,因为 False 与 LOW 相同,并且LED点亮。 else 语句在buttonPin不为False时关闭LED。
保存并运行脚本
通过单击文件》保存脚本另存为并选择文件名。您可以通过单击Thonny工具栏中的绿色 Play 按钮来运行草图。
现在按一下按钮,然后按LED应该点亮!随时按红色的停止按钮以停止程序
如果遇到困难,请检查代码和电路
方法2:GPIO零库
RPi.GPIO库太棒了,但是有个新手正在尝试。 GPIO零库是由Raspberry Pi社区经理Ben Nuttall创建的,其目的是使代码更简单,更易于读写。
要测试新库,请打开一个新的Thonny文件,然后导入
from gpiozero import LED, Button
from signal import pause
您会注意到您没有导入整个库。由于仅使用LED和按钮,因此脚本中仅需要这些模块。我们还从信号库(用于事件管理的Python库)导入暂停。
使用GPIO零设置引脚容易得多:
led = LED(18)
button = Button(23)
由于GPIO零库具有用于LED和按钮的模块,因此您无需像以前那样设置输入和输出。您会注意到,尽管引脚没有改变,但此处的数字与上面的数字有所不同。这是因为GPIO零仅使用GPIO引脚号(也称为Broadcom或BCM编号)。
脚本的其余部分只有三行:
button.when_pressed = led.on
button.when_released = led.off
pause()
此处的 pause()调用只是在脚本到达底部时停止退出脚本。只要按下并释放按钮,就会触发两个按钮事件。保存并运行脚本,您将看到与以前相同的结果!
向Raspberry Pi添加按钮的两种方法
在设置按钮的两种方法中, GPIO Zero方法似乎是最简单的。由于大多数初学者Raspberry Pi项目都使用RPi.GPIO库,因此仍然值得学习。就像这个项目一样简单,这些知识可以用于很多事情。
使用GPIO引脚是学习和发明自己的设备的好方法,但是它远远超出了您可以做的一切。 Pi。我们的Raspberry Pi非官方指南充满了创意和教程,您可以自己尝试一下!有关另一个类似的教程,请查看如何制作Wi-Fi连接按钮。
责任编辑:wv
-
按钮
+关注
关注
0文章
134浏览量
12779 -
树莓派
+关注
关注
116文章
1707浏览量
105632
发布评论请先 登录
相关推荐
评论