向Raspberry Pi项目添加按钮的2种方法

学习使用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的负极,另一条腿连接到面包板的接地导轨。 。
  • 引脚16(GPIO 23)附着在按钮的一侧,另一侧附着在面包板的接地导轨上。
  • 设置,如下所示:

    检查电路以确保其正确,然后打开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