计算机‎ > ‎软件‎ > ‎Linux‎ > ‎

树莓派使用 python 程序进行按键开关输入检测

发布者:guo rue,发布时间:2016年2月20日 06:47   [ 更新时间:2016年3月3日 02:28 ]
材料准备
树莓派*1
面包板*1
面包线(公母头)*4
面包线(公公头)*2
5mm LED 灯*1
10k 电阻器*1

组装电路
1,LED 的阳极(+)与树莓派的 Pin22 相连,LED 的阴极(-)与树莓派的 Pin20(Ground) 相连
2,按键的一端与 Pin1(3.3v) 相连;按键的另一端与 Pin18(GPIO 24) 相连,同时与一个 10K 电阻相连,10K 电阻的另一端连接到 Pin20(Ground)
3,参考文章末尾图片

创建程序
nano ledstatus.py
程序内容
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(24,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(25,GPIO.OUT)

ledStatus = True

while True:
    if (GPIO.input(24) == GPIO.HIGH):
        print("button pressed!")
        ledStatus = not ledStatus
        if ledStatus:
            GPIO.output(25,GPIO.HIGH)
        else:
            GPIO.output(25,GPIO.LOW)
        time.sleep(0.3)
    time.sleep(0.01)

说明

GPIO.setup(24,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
将 GPIO24 设置为输入状态,pull_up_down=GPIO.PUD_DOWN参数告诉程序初始化这个口为接地

while True 
是一个无限循环,不断读取 GPIO24 的值,根据读取的值是否为高电平 GPIO.HIGH 来判断按键是否按下

if (GPIO.input(24) == GPIO.HIGH)
如果按键按下,则翻转 LED 的状态——让 LED 亮或者灭。

print("button pressed!")
按下按键时候打印一行信息

time.sleep(0.01)
间隔 0.01 个时间单位之后再循环执行。如果不设置间隔循环时间,这个程序将无限马上循环执行,将大量占用树莓派的 CPU 使用时间。

使用 root 权限执行程序
sudo python ledstatus.py

a.