我的 While True 循环卡在 python

My While True loop is getting stuck in python

你好,我一直在为我的 python 代码中的主文件开发一个无限的 While True 循环。我正在研究 Raspberry Pi,我的目标是只要其中一个 GPIO 引脚检测到输入,它就会打印出一个字符串。然而,当我按下一个按钮时,它会无限地打印它,停止它的唯一方法是按 Ctrl-C。当它一遍又一遍地打印相同的字符串时,没有其他按钮会改变发生的事情。我做错了什么我忘记了某处的步骤吗?

import RPi.GPIO as GPIO
import time
from time import sleep
GPIO.setmode(GPIO.BCM)

GPIO.setup(26, GPIO.IN)
GPIO.setup(19, GPIO.IN)
GPIO.setup(13, GPIO.IN)
GPIO.setup(6, GPIO.IN)

input_A = GPIO.input(26)
input_B = GPIO.input(19)
input_C = GPIO.input(13)
input_D = GPIO.input(6)

while True:
    if input_A == True:
            print('A was pushed')

    if input_B == True:
            print('B was pushed')

    if input_C == True:
            print('C was pushed')

    if input_D == True:
            print('D was pushed')

    sleep(1.5);

您需要不断更新 while 循环中的 input_* 变量

while True:
    input_A = GPIO.input(26)
    input_B = GPIO.input(19)
    input_C = GPIO.input(13)
    input_D = GPIO.input(6)

    if input_A == True:
            print('A was pushed')

    if input_B == True:
            print('B was pushed')

    if input_C == True:
            print('C was pushed')

    if input_D == True:
            print('D was pushed')

    sleep(1.5);

在每个 if 语句下的 break 语句处。当你这样做时,将倒数第二个 ifs 更改为 elifs。

while True:
    if input_A == True:
        print('A was pushed')
        break
    elif input_B == True:
        print('B was pushed')
        break
    elif input_C == True:
        print('C was pushed')
        break
    elif input_D == True:
        print('D was pushed')
        break

申报时

input_A = GPIO.input(26)
input_B = GPIO.input(19)
input_C = GPIO.input(13)
input_D = GPIO.input(6)

您正在为那些不会更改的变量赋值,因为您没有在循环内更新它们。

因此,您需要在循环中添加一行来更新输入 A B C 和 D。

为什么不尝试为每个 if 语句引入一个 break。它应该阻止它无限循环。

并更新您的变量,即输入应该在 while 循环中。

例如

if input_A == True:
    print('A was pushed')
    break