GPIO按钮不改变打开的灯

2024-10-03 15:31:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难理解我想在标题中说什么,但我目前正试图改变选择的灯,这是打开每当按钮是在我的试验板上点击。尽管我对代码的判断是正确的,但现在点击按钮什么也没做。因为我还在学习如何使用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()

Tags: inimporttrueforoutputledgpioif
1条回答
网友
1楼 · 发布于 2024-10-03 15:31:17

在Python中,将布尔值与True(或False)显式比较几乎总是一个错误。它充其量是完全没有意义的:比较的结果本身就是一个布尔值,为什么它在某种程度上是可用的,但原始值不是?而且它可能是有害的,因为您正在抛弃Python将范围广泛的值视为“truthy”(非零数字、非空字符串或容器等)的能力。在这种特殊情况下,GPIO.input()的返回值实际上是一个整数(我认为是0或1),因此将其与True进行比较可以确保您的代码永远不会检测到按钮按下。所以只要写下if GPIO.input(18):——注意,你在if周围放的那些括号是不必要的

相关问题 更多 >