如何运行 Raspberry Pi GPIO异步输入按键?
How to run Raspberry Pi GPIO input buttons asynchronously?
import RPi.GPIO as GPIO
import time
import os
import subprocess
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
input_state=GPIO.input(18)
input_state1=GPIO.input(17)
if input_state==False:
print('Scan Button Pressed')
subprocess.call(['./ocr.sh'])
if input_state1==False:
print('Read Button Pressed')
subprocess.call(['aplay','temp1.wav'])
如果检测到输入 17 temp.wav 将播放,而音频文件正在播放时无法检查输入 18。如何在 运行 进程之间检查这样的事情?
我正在使用一项名为 pigpiod
的服务,并在我的 raspberry pi 上运行该服务。
我为 pigpiod 服务(守护进程)安装了 python 库。
我检测按钮状态的代码类似于
!/usr/bin/env python
import pigpio
import time
import datetime
if __name__ == "__main__":
def cbf(gpio, level):
if(pi.read(gpio)!=0):
i = datetime.datetime.now()
date = i.strftime("%Y-%m-%d %H:%M:%S")
print "gpio "+str(gpio)+"button gpio gave 1"
print date
if(pi.read(gpio)==0):
i = datetime.datetime.now()
date = i.strftime("%Y-%m-%d %H:%M:%S")
print "gpio "+str(gpio)+"button gpio gave 0"
print date
pi = pigpio.pi()
pi.set_mode(23, pigpio.INPUT)
while True:
cbf(23, pigpio.EITHER_EDGE)
运行 python 脚本并按下按钮。您将获得不同的值,如 0 和 1。
所以基本上我使用 PIGPIO 和 Python 来检测按钮按下以及电路关闭或打开 raspberry PI 的特定 GPIO。
启动pigpio守护进程
sudo pigpiod
停止 pigpio 守护进程
sudo killall pigpiod
github
git clone https://github.com/joan2937/pigpio
Python图书馆
sudo apt-get update
sudo apt-get install pigpio python-pigpio python3-pigpio
- Link for PIGPIO
- Download & Install PIGPIO 和 运行
PIGPIOD 服务
注意:我不使用RPi.GPIO或Raspberry上可用的GPIO服务。我的温度传感器、RFID 读卡器等都使用了 pigpio
import RPi.GPIO as GPIO
import time
import os
import subprocess
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
input_state=GPIO.input(18)
input_state1=GPIO.input(17)
if input_state==False:
print('Scan Button Pressed')
subprocess.call(['./ocr.sh'])
if input_state1==False:
print('Read Button Pressed')
subprocess.call(['aplay','temp1.wav'])
如果检测到输入 17 temp.wav 将播放,而音频文件正在播放时无法检查输入 18。如何在 运行 进程之间检查这样的事情?
我正在使用一项名为 pigpiod
的服务,并在我的 raspberry pi 上运行该服务。
我为 pigpiod 服务(守护进程)安装了 python 库。
我检测按钮状态的代码类似于
!/usr/bin/env python
import pigpio
import time
import datetime
if __name__ == "__main__":
def cbf(gpio, level):
if(pi.read(gpio)!=0):
i = datetime.datetime.now()
date = i.strftime("%Y-%m-%d %H:%M:%S")
print "gpio "+str(gpio)+"button gpio gave 1"
print date
if(pi.read(gpio)==0):
i = datetime.datetime.now()
date = i.strftime("%Y-%m-%d %H:%M:%S")
print "gpio "+str(gpio)+"button gpio gave 0"
print date
pi = pigpio.pi()
pi.set_mode(23, pigpio.INPUT)
while True:
cbf(23, pigpio.EITHER_EDGE)
运行 python 脚本并按下按钮。您将获得不同的值,如 0 和 1。
所以基本上我使用 PIGPIO 和 Python 来检测按钮按下以及电路关闭或打开 raspberry PI 的特定 GPIO。
启动pigpio守护进程
sudo pigpiod
停止 pigpio 守护进程
sudo killall pigpiod
github
git clone https://github.com/joan2937/pigpio
Python图书馆
sudo apt-get update
sudo apt-get install pigpio python-pigpio python3-pigpio
- Link for PIGPIO
- Download & Install PIGPIO 和 运行 PIGPIOD 服务
注意:我不使用RPi.GPIO或Raspberry上可用的GPIO服务。我的温度传感器、RFID 读卡器等都使用了 pigpio