我有一个覆盆子Pi,我使用这个脚本在GPIO上添加了一个关闭按钮:
import RPi.GPIO as GPIO
import os
gpio_pin_number=21
GPIO.setmode(GPIO.BCM)
GPIO.setup(gpio_pin_number, GPIO.IN, pull_up_down=GPIO.PUD_UP)
try:
GPIO.wait_for_edge(gpio_pin_number, GPIO.FALLING)
os.system("sudo shutdown -h now")
except:
pass
GPIO.cleanup()
它就像一个魅力,但我不止一次按下按钮,所以为了避免这个问题,我想修改脚本,所以它要求你按住按钮N秒而不是按下它。 / p>
所以如果有人能指出我正确的方向(我在python中不是很好),我会很高兴。
答案 0 :(得分:2)
睡眠N秒,使用GPIO.input读取GPIO值,如果它仍为0,则运行shutdown命令。 - larsks 1分钟前编辑
import RPi.GPIO as GPIO
import os
import time
gpio_pin_number=21
GPIO.setmode(GPIO.BCM)
GPIO.setup(gpio_pin_number, GPIO.IN, pull_up_down=GPIO.PUD_UP)
while True:
GPIO.wait_for_edge(gpio_pin_number, GPIO.FALLING)
time.sleep(2)
if GPIO.input(gpio_pin_number) == 0:
break
os.system("sudo shutdown -h now")
以上内容需要您按住按钮两秒钟。