# 使用Python检测按键状态

在这节中,我们会用Python检测按键的状态,根据按键不同的状态来做出不同的反应[2]。首先,让我们来看一看按键的物理特性,如图:

它有这几个关键的性质:

  1. 数字相同的引脚内部是相连的
  2. 数字不同的引脚内部是断开的
  3. 当按下按键后,数字不同的引脚由断开状态变为相连的状态

按照给出的原理图:

搭建出下面的电路:

接下来,我们通过编程来获取第一个按键开关的状态。编写程序detect_button.py:

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP)

while True:
    input_state = GPIO.input(27)
    if input_state == False:
        print('Button Pressed')
        time.sleep(0.2)
1
2
3
4
5
6
7
8
9
10
11

在上面的程序里面:

  1. GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP) 设置GPIO27引脚为输入引脚,并设置为引脚上拉,即pull up模式。上拉模式的内部原理如下:

在设置GPIO27的引脚为输入引脚上拉模式后, 树莓派检测到的引脚电平为高电平(True), 当按下按键后,树莓派检测到GPOI27的电平为低电平(False)。

  1. 通过无限循环来检测GPIO27的输入电平,如果检测到低电平(即第一个按键被按下), 则终端打印输出Button Pressed

  2. 第一次出现了if语句,它有下面的几个特征:

    • if关键字
    • 一个条件(一个为True或者False的表达式)
    • 一个冒号
    • 一组缩进的代码

当条件为True时,执行一次if的缩进代码;否则不执行if缩进代码。 运行detect_button.py, 按下第一个按键,看看有什么反应。退出程序记得按Ctrl C

练习:

结合现在了解到的知识,你能够设计实现通过按下第二个按键点亮LED灯的程序吗?

通过本节,我们可以了解到:

  • if语句的基本语法
  • 使用Python检测按键的状态