向树莓派项目添加按钮的2种方法

电子说

1.2w人已加入

描述

学习使用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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分