【发布时间】:2015-02-04 00:26:47
【问题描述】:
我编写了一个 python 脚本来检测瞬时按钮按下并将每个按钮记录到一个文件中。每次按下时,一个 LED 也会通过 GPIO.OUT 亮起。 原始文件可以创造奇迹,但是我目前需要在混合中添加两个按钮(现在总共 4 个),每个按钮还将写入一个文件并点亮一个 LED。当我执行我认为应该工作的脚本时,只有按钮 1 工作。任何有关如何调试非工作代码的帮助表示赞赏。
非工作代码(4 个按钮):
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
import serial
import syslog
import MySQLdb as mdb
import subprocess
poursdir = '/var/www/RPints'
path = '/var/www/RPints/includes/pours.php'
outpin1 = 26
inpin1 = 18
outpin2 = 16
inpin2 = 23
outpin3 = 6
inpin3 = 17
outpin4 = 5
inpin4 = 22
GPIO.setmode(GPIO.BCM)
GPIO.setup(outpin1, GPIO.OUT)
GPIO.setup(inpin1, GPIO.IN)
GPIO.setup(outpin2, GPIO.OUT)
GPIO.setup(inpin2, GPIO.IN)
GPIO.setup(outpin3, GPIO.OUT)
GPIO.setup(inpin3, GPIO.IN)
GPIO.setup(outpin4, GPIO.OUT)
GPIO.setup(inpin4, GPIO.IN)
while True:
value1 = GPIO.input(inpin1)
value2 = GPIO.input(inpin2)
value3 = GPIO.input(inpin3)
value4 = GPIO.input(inpin4)
if not value1 or value2 or value3 or value4:
GPIO.output(outpin1, 0)
GPIO.output(outpin2, 0)
GPIO.output(outpin3, 0)
GPIO.output(outpin4, 0)
else:
if value1:
GPIO.output(outpin1, 1)
subprocess.call(["php", path, "1", "1"])
elif value2:
GPIO.output(outpin2, 1)
subprocess.call(["php", path, "2", "1"])
elif value3:
GPIO.output(outpin3, 1)
subprocess.call(["php", path, "3", "1"])
elif value4:
GPIO.output(outpin4, 1)
subprocess.call(["php", path, "4", "1"])
time.sleep(.3)
GPIO.cleanup()
工作代码(2 按钮):
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
import serial
import syslog
import MySQLdb as mdb
import subprocess
poursdir = '/var/www/RPints'
path = '/var/www/RPints/includes/pours.php'
outpin1 = 26
inpin1 = 18
outpin2 = 16
inpin2 = 23
GPIO.setmode(GPIO.BCM)
GPIO.setup(outpin1, GPIO.OUT)
GPIO.setup(inpin1, GPIO.IN)
GPIO.setup(outpin2, GPIO.OUT)
GPIO.setup(inpin2, GPIO.IN)
while True:
value1 = GPIO.input(inpin1)
value2 = GPIO.input(inpin2)
if not value1 and not value2:
GPIO.output(outpin1, 0)
GPIO.output(outpin2, 0)
else:
if value1 and not value2:
GPIO.output(outpin1, 1)
subprocess.call(["php", path, "1", "1"])
elif value2 and not value1:
GPIO.output(outpin2, 1)
subprocess.call(["php", path, "2", "1"])
time.sleep(.3)
time.sleep(.05)
GPIO.cleanup()
【问题讨论】:
-
你为什么改变'if not value1 or value2 or value3 or value4'的逻辑?工作代码不同。