第一次来这里。我不是程序员,我试图用我的RPi创建一个简单的监控系统,但是遇到了一些问题。希望有人能在路上帮我?在
我需要的是,当杠杆不断被按下时,我想发一封电子邮件。当杠杆释放后,我希望程序“重启”,这样当杠杆在未来某个时间再次按下时,另一封邮件就会被发送。在
我已经得到了单独的导入邮件脚本工作和硬件设置似乎正在工作。在
结果是:用sudo python pellets.py启动程序
按住控制杆,1封邮件正在成功发送,但程序每3秒钟打印一次“已发送1封邮件”,直到我松开控制杆
(?). 在
当再次按下操纵杆并保持不动时,不发送邮件(?),
但是程序一直在打印“已发送1封邮件”,直到我发布
杠杆。在
为了让程序再次发送邮件,我需要CTRL+C并中断程序并手动重新启动程序。在
我错过了什么?在为什么程序不发送第二封邮件时,我释放,重新按下并按住
杠杆?在
为什么程序一直打印文本消息而我保留
操纵杆按下?当我设置sent_mail=1时,循环现在不应该结束吗?在
我试着清理if循环中的GPIO通道,但是没有像我想的那样工作。然后文本继续打印,即使在我释放杠杆。但是没有更多的邮件被发送。在
这是我的代码:import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(GPIO.IN, pull_up_down=GPIO.PUD_UP)
mail_sent = 0
try:
while True:
input_state = GPIO.input(12)
if input_state == 0 and mail_sent == 0:
import pellets_sendmail
print ('SENT 1 MAIL')
mail_sent = 1
time.sleep(3)
else:
mail_sent = 0
except KeyboardInterrupt:
GPIO.cleanup(12)