我正在尝试编写一个小脚本来控制两个树莓派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号引脚,脚本中显示的时间是我进行测试时记录的。使用此代码时,以下是我看到的结果:
当time变量为真时,Out.Pin 23会根据In.Pin.17的状态在高电位和低电位之间切换
当time变量不为真时,Out.Pin 23停止在高电位和低电位之间切换
我感觉Out.Pin.23可以工作了...
执行代码后,Out.Pin 25立即点亮并保持点亮,无论In.Pin.17的状态或时间如何。
请忽略脚本中的时间,它们来自我的测试,不会与上述要求匹配。
我是编码和编写脚本的初学者,非常感谢社区提供的任何帮助。
谢谢