代码调试,为什么led运行后不熄灭?
Code debugging, why leds won't turn off after operation?
我写了一个代码,根据 txt 文件中的日期和颜色打开 LED。如果日期正确,LED 会亮起,但当正确的时间过去时,LED 不会关闭,它们仍然会发光,直到下一个日期。
那么,为什么led不熄灭,问题出在哪里呢?请帮忙,我几乎尝试了一切。
import sys
import time
import datetime
import RPi.GPIO as GPIO
import SDL_DS1307
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
LED_R = 17
LED_G = 27
LED_B = 22
GPIO.setup(17, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
filename = time.strftime("%Y-%m-%d%H:%M:%SRTCTest") + ".txt"
starttime = datetime.datetime.utcnow()
ds1307 = SDL_DS1307.SDL_DS1307(1, 0x68)
ds1307.write_now()
while True:
currenttime = datetime.datetime.utcnow()
deltatime = currenttime - starttime
data=time.strftime("%Y"+"%m"+"%d"+"%H"+"%M")
with open('data.txt') as f:
for line in f:
parts=line.split()
if parts[0]<=(data)<=parts[1]:
if parts[2]=='raudona':
GPIO.putput(LED_R, False)
GPIO.putput(LED_G, True)
GPIO.putput(LED_B, True)
elif parts[2]=='zalia':
GPIO.putput(LED_R, True)
GPIO.putput(LED_G, False)
GPIO.putput(LED_B, True)
elif parts[2]=='melyna':
GPIO.putput(LED_R, True)
GPIO.putput(LED_G, True)
GPIO.putput(LED_B, False)
elif parts[2]=='geltona':
GPIO.putput(LED_R, False)
GPIO.putput(LED_G, True)
GPIO.putput(LED_B, False)
elif parts[2]=='zydra':
GPIO.putput(LED_R, True)
GPIO.putput(LED_G, False)
GPIO.putput(LED_B, False)
elif parts[2]=='violetine':
GPIO.putput(LED_R, False)
GPIO.putput(LED_G, False)
GPIO.putput(LED_B, True)
elif parts[2]=='balta':
GPIO.putput(LED_R, False)
GPIO.putput(LED_G, False)
GPIO.putput(LED_B, False)
time.sleep(10.0)
嘿兄弟我相信我已经找到了你问题的答案。好的,这就是你要做的。 THIS IS A THOROUGH GUIDE ON DEBUGGING A BLINKING LED
努力阅读指南,因为它包含有关解决您遇到的问题的有用信息。
你看Raspberry Pi是一个非常有趣和独特的设备
使用 for-else construct 的好机会。
如果找到点亮LED灯的指令,则点亮LED然后跳出循环,因为任务已经完成。
对于这种情况,没有找到指令,即没有执行 break
,将 else
套件添加到循环中并关闭那里的所有 LED。
for line in f:
parts=line.split()
if parts[0]<=(data)<=parts[1]:
if parts[2]=='raudona':
GPIO.putput(LED_R, False)
GPIO.putput(LED_G, True)
GPIO.putput(LED_B, True)
break
elif parts[2]=='zalia':
GPIO.putput(LED_R, True)
GPIO.putput(LED_G, False)
GPIO.putput(LED_B, True)
break
# elif .....
else:
GPIO.putput(LED_R, False)
GPIO.putput(LED_G, False)
GPIO.putput(LED_B, False)
(代码未测试,我所有的覆盆子都在花园里)
我写了一个代码,根据 txt 文件中的日期和颜色打开 LED。如果日期正确,LED 会亮起,但当正确的时间过去时,LED 不会关闭,它们仍然会发光,直到下一个日期。 那么,为什么led不熄灭,问题出在哪里呢?请帮忙,我几乎尝试了一切。
import sys
import time
import datetime
import RPi.GPIO as GPIO
import SDL_DS1307
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
LED_R = 17
LED_G = 27
LED_B = 22
GPIO.setup(17, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
filename = time.strftime("%Y-%m-%d%H:%M:%SRTCTest") + ".txt"
starttime = datetime.datetime.utcnow()
ds1307 = SDL_DS1307.SDL_DS1307(1, 0x68)
ds1307.write_now()
while True:
currenttime = datetime.datetime.utcnow()
deltatime = currenttime - starttime
data=time.strftime("%Y"+"%m"+"%d"+"%H"+"%M")
with open('data.txt') as f:
for line in f:
parts=line.split()
if parts[0]<=(data)<=parts[1]:
if parts[2]=='raudona':
GPIO.putput(LED_R, False)
GPIO.putput(LED_G, True)
GPIO.putput(LED_B, True)
elif parts[2]=='zalia':
GPIO.putput(LED_R, True)
GPIO.putput(LED_G, False)
GPIO.putput(LED_B, True)
elif parts[2]=='melyna':
GPIO.putput(LED_R, True)
GPIO.putput(LED_G, True)
GPIO.putput(LED_B, False)
elif parts[2]=='geltona':
GPIO.putput(LED_R, False)
GPIO.putput(LED_G, True)
GPIO.putput(LED_B, False)
elif parts[2]=='zydra':
GPIO.putput(LED_R, True)
GPIO.putput(LED_G, False)
GPIO.putput(LED_B, False)
elif parts[2]=='violetine':
GPIO.putput(LED_R, False)
GPIO.putput(LED_G, False)
GPIO.putput(LED_B, True)
elif parts[2]=='balta':
GPIO.putput(LED_R, False)
GPIO.putput(LED_G, False)
GPIO.putput(LED_B, False)
time.sleep(10.0)
嘿兄弟我相信我已经找到了你问题的答案。好的,这就是你要做的。 THIS IS A THOROUGH GUIDE ON DEBUGGING A BLINKING LED
努力阅读指南,因为它包含有关解决您遇到的问题的有用信息。
你看Raspberry Pi是一个非常有趣和独特的设备
使用 for-else construct 的好机会。
如果找到点亮LED灯的指令,则点亮LED然后跳出循环,因为任务已经完成。
对于这种情况,没有找到指令,即没有执行 break
,将 else
套件添加到循环中并关闭那里的所有 LED。
for line in f:
parts=line.split()
if parts[0]<=(data)<=parts[1]:
if parts[2]=='raudona':
GPIO.putput(LED_R, False)
GPIO.putput(LED_G, True)
GPIO.putput(LED_B, True)
break
elif parts[2]=='zalia':
GPIO.putput(LED_R, True)
GPIO.putput(LED_G, False)
GPIO.putput(LED_B, True)
break
# elif .....
else:
GPIO.putput(LED_R, False)
GPIO.putput(LED_G, False)
GPIO.putput(LED_B, False)
(代码未测试,我所有的覆盆子都在花园里)