我正在尝试编写一个小脚本来根据两个因素控制两个树莓派的 GPIO 输出引脚:GPIO.input.17 的状态和一天中的时间。
当 gpio.input.17 为低电平时,我希望 gpio.output.23 和 gpio.output.25 为低电平。
我希望当 gpio.input.17 为高且时间在 0700-2159 之间时 gpio.output.23 变高。
我希望当 gpio.input.17 为高且时间在 2200-0659 之间时 gpio.output.25 变高。
到目前为止,我整理的代码如下所示:
#!/usr/bin/python
import time
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
# Setup GPIO pins
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # set GPIO 17 as input
GPIO.setup(23, GPIO.OUT) # set GPIO 23 as output
GPIO.setup(25, GPIO.OUT) # set GPIO 25 as output
GPIO.output(23, 0) # set GPIO 23 as low
GPIO.output(25, 0) # set GPIO 25 as low
while True:
dt = list(time.localtime())
hour = dt[3]
minute = dt[4]
second = dt[5]
time.sleep(1)
print hour,minute,second;
PIR_Active = GPIO.input(17)
if not PIR_Active:
GPIO.output(23, 0)
GPIO.output(25, 0)
elif (PIR_Active and (hour>=00 and hour<=6) and (minute >=00 and minute<=59) and (second >=0 and second<=59)):
GPIO.output(25, 1)
elif (PIR_Active and (hour>=7 and hour<=11) and (minute>=0 and minute<=36) and (second>=0 and second<=59)):
GPIO.output(23, 1)
else: (PIR_Active and (hour>=11 and hour<=23) and (minute >=37 and minute<=59) and (second >=0 and second<=59));
GPIO.output(25, 1)
time.sleep(1)
GPIO.cleanup()
我将 LED 连接到引脚 23 和 25,脚本中显示的时间来自我的测试,我通过此代码看到的结果是:
Out.Pin 23 按照 In.Pin.17 的状态在高电平和低电平之间切换,同时时间变量是真的
Out.Pin 23 停止在高低之间切换,而时间变量不正确
我感觉 Out.Pin.23 正在工作...
当代码执行时,Out.Pin 25 立即亮起,并且无论 In.Pin.17 的状态或时间如何,都保持亮起。
请忽略脚本中的时间,它们来自我的测试,与上述要求不符。
我是编码和编写脚本的初学者,非常感谢社区的任何帮助。
慕莱坞森
交互式爱情
Cats萌萌
相关分类