树莓派按键关机PYTHON脚本
本文地址:http://tongxinmao.com/Article/Detail/id/266
#!/usr/bin/env python # coding=utf-8 import RPi.GPIO as GPIO import time import os,sys import signal #定义关机键和关机状态指示灯的GPIO引脚 GPIO.setmode(GPIO.BCM) pin_btn = 23 pin_led_reboot = 7 pin_led_halt = 8 #初始化SAKS上相应按键和LED的状态,按键内部上拉、LED不亮 GPIO.setup(pin_btn, GPIO.IN, pull_up_down = GPIO.PUD_UP) GPIO.setup(pin_led_reboot, GPIO.OUT, initial = GPIO.HIGH) GPIO.setup(pin_led_halt, GPIO.OUT, initial = GPIO.HIGH) #初始化按下关机键的次数 press_times = 0 #按下关机键后等待并倒数10次 count_down = 10 led_on_reboot = 0 led_on_halt = 0 def onPress(channel): global press_times, count_down print('pressed') press_times += 1 if press_times > 3: press_times = 1 #重启模式 if press_times == 1: GPIO.output(pin_led_reboot, 0) GPIO.output(pin_led_halt, 1) print('system will restart in %s' % (count_down)) #关机模式 elif press_times == 2: GPIO.output(pin_led_reboot, 1) GPIO.output(pin_led_halt, 0) print('system will halt in %s' % (count_down)) #模式取消 elif press_times == 3: GPIO.output(pin_led_reboot, 1) GPIO.output(pin_led_halt, 1) print 'cancel' count_down = 10 #设置按键检测,检测到按下时调用 onPress 函数 GPIO.add_event_detect(pin_btn, GPIO.FALLING, callback = onPress, bouncetime = 500) try: while True: #重启模式 if press_times == 1: if count_down == 0: print "start restart" os.system("shutdown -r -t 5 now") sys.exit() led_on_reboot = not led_on_reboot #黄色 LED 闪烁 GPIO.output(pin_led_reboot, led_on_reboot) #关机模式 if press_times == 2: if count_down == 0: print "start shutdown" os.system("shutdown -t 5 now") sys.exit() led_on_halt = not led_on_halt #红色 LED 闪烁 GPIO.output(pin_led_halt, led_on_halt) if press_times == 1 or press_times == 2: count_down -= 1 print "%s second" % (count_down) time.sleep(1) except KeyboardInterrupt: print('User press Ctrl+c, exit;') finally: GPIO.cleanup()
开机自动运行脚本 :
vim
/etc/rc
.
local
python /home/pi/powerbutton.py &
上一篇:Android连接网络打印机进行打印
下一篇:OPENVIZSLA ov3p ov_ftdi 描述符