我正在尝试使用cron触发的脚本根据温度将引脚置为低电平和高电平,但是..我遇到了一些问题。
1 - 当脚本启动并设置GPIO引脚时,它会将引脚拉高或拉低(取决于参数) - 似乎没有办法告诉它不要改变当前的状态针。
这是一个问题,因为如果继电器为高电平且默认状态为低电平,则继电器将设置为低电平,然后可以非常快速地再次变为高电平 - 这样做每分钟都非常难以确定引脚控制的是什么(如果默认状态为高,则同样适用。)
2 - 当脚本退出时,它会清理GPIO引脚并更改引脚的状态。理想情况下,如果脚本将引脚置为高电平,那么当它退出时,我希望引脚保持高电平。如果我删除了清理功能,那么下次脚本运行时就会说该引脚已经在使用了(问题?)。
所以每分钟运行的脚本都是这样的。
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
import random
from temp import Temp # custom object to handle the temp sensor.
def main():
random.seed()
GPIO.setmode(GPIO.BCM)
PUMP_ON_TEMP = 38
PUMP_OFF_TEMP = 30
GPIO_PIN = 18
try:
t = Temp('28-00000168c492')
GPIO.setup(GPIO_PIN, GPIO.OUT)
current_temp = t.getTemp()
print current_temp
if current_temp > PUMP_ON_TEMP:
GPIO.output(GPIO_PIN, 1)
print "Turning the pump on! %s" % current_temp
if current_temp < PUMP_OFF_TEMP:
GPIO.output(GPIO_PIN, 0)
print "Turning the pump off! %s" % current_temp
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()
if __name__ == '__main__':
main()
这通过cron每分钟运行一次。我不想使用循环。
我试图首先将引脚作为输入读取以获得当前的高/低状态但是会抛出一个错误,说明需要首先设置引脚....