照明程序 - 覆盆子pi运行警告上的GPIO开/关

时间:2016-01-22 12:00:58

标签: python raspberry-pi

你好,我一直试图独自完成这个工作超过一个星期,但我认为是时候提问了。

这是我的第一个使用python的程序,我打算用各种功能控制我的水族箱。

我正在编程的第一个功能是照明时间表(这篇文章稍微缩短了代码)

代码执行正常,但GPIO引脚2没有正确打开和关闭。我也得到了“运行警告这个频道已经在使用”

我可以请一些指导,我确定它的简单和noob:)

这是我的代码

#Lighting Program 

import RPi.GPIO as GPIO
import datetime

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

#Declare Lighting On/Off Times
on_time_Monday = 600
off_time_Monday = 2330

其余的日子

#Find out what day of the week it is
day = datetime.datetime.now()
day_of_week = day.isoweekday()

#find out what time it is
Current_time = datetime.datetime.strftime(datetime.datetime.now(),'%H%M')

#convert the time to an int so it can be compared
Current_time_INT = int(Current_time)

#Schedule on / off
if (day_of_week == 1) and (Current_time_INT > on_time_Monday and Current_time_INT < off_time_Monday) :
    Light_on_off = 'on'

使用'elif'作为星期二等等

else :
    Light_on_off = 'off'

现在启用输出

#CALL OUTPUTS ON / OFF
GPIO.setup(2, GPIO.OUT) 

if Light_on_off == 'on':
    GPIO.output(2, GPIO.HIGH)
else:
    GPIO.output(2, GPIO.LOW)

GPIO.cleanup()

1 个答案:

答案 0 :(得分:0)

根据我的经验“运行警告这个频道已经在使用”,当您之前设置了GPIO引脚但未调用时     GPIO.cleanup()。 我在你的代码中看到了这一点,但我怀疑由于某种原因它实际上并没有运行。

有时通过运行python解释器测试终端中的GPIO引脚是有帮助的。测试是否正确连接了电路特别有用。

>>>import RPi.GPIO as GPIO
>>>GPIO.setmode(GPIO.BCM)
>>>GPIO.setwarnings(False)
>>>GPIO.setup(2, GPIO.OUT)
>>>GPIO.output(2, GPIO.HIGH)
>>>GPIO.input(2)
True
>>>GPIO.output(2, GPIO.LOW)
>>>GPIO.input(2)
False
>>>GPIO.cleanup()

如果您的电路接线正确,您应该可以通过这种方式打开和关闭灯。当您调用GPIO.input(2)时,解释器会响应引脚的当前状态。这使您无需使用外部电路即可确保引脚正常工作。一旦你知道它正在工作,你就可以继续前进。

打开和关闭灯开关的一种简单方法是使用cron作业。我过去成功使用过这种方法。

你可以编写两个简短的脚本,一个打开灯,一个关闭它。

示例:lightOn.py(对于lightOff.py,将'HIGH'替换为'LOW')

#!/usr/bin/env python
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(2, GPIO.OUT)
GPIO.output(2, GPIO.HIGH)
GPIO.cleanup()

现在您可以create a crontab在您想要的时间自动运行脚本。 例如:

0 6 * * *  /home/pi/lightOn.py
0 18 * * * /home/pi/lightOff.py

每天早上6点开灯,晚上6点开灯