我无法弄清楚我想在标题中说出什么,但我正在尝试更改在我的面包板上点击按钮时打开的灯的选择。虽然我对代码的判断是正确的,但是当前单击该按钮不会执行任何操作。由于我还在学习如何使用Python,RaspPi,这样做非常令人沮丧。
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN) #GPIO pin for colour change
GPIO.setup(20, GPIO.IN) #GPIO for exit
GPIO.setup(22, GPIO.OUT) #GPIO Pin for red LED
GPIO.setup(12, GPIO.OUT) #GPIO Pin for blue LED
colorCheck = 0
try:
while True:
if ( GPIO.input(18) == True ):
if (colorCheck < 3):
colorCheck = colorCheck + 1;
else:
colorCheck = 1;
if (colorCheck == 1):
GPIO.output(12, GPIO.HIGH)
GPIO.output(22, GPIO.LOW)
elif (colorCheck == 2):
GPIO.output(12, GPIO.LOW)
GPIO.output(22, GPIO.HIGH)
elif (colorCheck == 3):
GPIO.output(12, GPIO.HIGH)
GPIO.output(22, GPIO.HIGH)
except KeyboardInterrupt:
GPIO.cleanup()
答案 0 :(得分:0)
在Python中,显式地将布尔值与True
(或False
)进行比较几乎总是一个错误。它充其量是完全没有意义的:比较的结果本身就是一个布尔值,为什么它在某种程度上可用,但原始值不是?而且它可能会产生积极的伤害,因为您正在抛弃Python处理各种价值观的能力,因为这样做了很多事情。 (非零数字,非空字符串或容器等)。在这种特殊情况下,GPIO.input()
的返回值实际上是一个整数(我认为是0或1),因此将其与True
进行比较可确保您的代码永远不会检测到按下按钮。所以,只需写下if GPIO.input(18):
- 请注意,您所有的if括起来的那些括号是不必要的。