【发布时间】:2024-01-19 14:57:01
【问题描述】:
为了节省时间,代码在按下右侧的开关后开始循环,两个 LED 来回闪烁。我一直在尝试做的——显然没有成功——是通过按下左侧的第二个开关来关闭两个 LED 并且代码完全停止来停止 while 循环。任何帮助或提示将不胜感激。
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
leftLED = 22
rightLED = 18
leftSWITCH = 24
rightSWITCH = 16
GPIO.setup(leftLED, GPIO.OUT)
GPIO.setup(rightLED, GPIO.OUT)
GPIO.setup(leftSWITCH, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(rightSWITCH, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.output(leftLED, False)
GPIO.output(rightLED, False)
try:
print("press the left button to start. Press the right button to stop.")
while True:
input_state = GPIO.input(leftSWITCH)
if input_state == False:
while True:
input_state1 = GPIO.input(rightSWITCH)
GPIO.output(rightLED, GPIO.LOW)
time.sleep(.5)
GPIO.output(rightLED, GPIO.HIGH)
time.sleep(.1)
GPIO.output(leftLED, GPIO.LOW)
time.sleep(.5)
GPIO.output(leftLED, GPIO.HIGH)
time.sleep(.1)
if input_state1 == False:
break
finally:
GPIO.cleanup()
【问题讨论】:
-
你里面的
while循环是一个无限循环:条件是while True并且循环中没有break语句。您如何尝试检查左侧开关的状态? -
我编辑了我的代码,它不起作用,但我不知道为什么,我很抱歉我还不习惯这个网站。
-
您是否有意将一台交换机配置为
PUD_DOWN,而将另一台交换机配置为PUD_UP? -
那是我的实验。他们俩应该都起来我接受吗?我在我的代码中修复了它。但是将两个开关都更改为 UP 仍然不会取消无限循环。
-
@larsks 我读到了
PUD_UP和PUD_DOWN实际上做了什么,我可以说两个开关都连接到3.3v 所以我将两个开关都设置为PUD_UP
标签: python-3.x while-loop raspberry-pi3 gpio led