在启动时检测引脚状态,并允许在脚本退出后继续

时间:2015-01-17 20:27:36

标签: python raspberry-pi raspbian gpio

我正在尝试使用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每分钟运行一次。我不想使用循环。

我试图首先将引脚作为输入读取以获得当前的高/低状态但是会抛出一个错误,说明需要首先设置引脚....

0 个答案:

没有答案