樹莓派按鍵關機PYTHON指令碼

2021-10-05 08:00:43 字數 2520 閱讀 4783

#!/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 =

23pin_led_reboot =

7pin_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 =

10led_on_reboot =

0led_on_halt =

0def

onpress

(channel)

:global press_times, count_down

print

('pressed'

) press_times +=

1if 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 ==

1or press_times ==2:

count_down -=

1print

"%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 &

樹莓派 按鍵程式

樹莓派3b wiringpi庫的使用 button按鈕操作 五 樹莓派3b wiringpi庫的使用 點亮led 如何編譯的教程 樹莓派學習筆記 wiringpi簡介 安裝和管腳說明 檢視樹莓派gpio引腳編號及定義 gpio readall輸出如下,說明wiringpi庫已經安裝成功。原來的官方鏈...

樹莓派的按鍵中斷

一 實驗現象 程式實現在樹莓派上通過中斷的方式檢測按鍵是否按下,如果按鍵按下的話,會列印出按鍵按下的提示資訊 二 操作步驟 1,初始化wiringpi庫 2,設定按鍵引腳為輸入模式 3,設定引腳為上拉模式 即 當按鍵沒有被按下時,該輸入腳為高電平 4,註冊中斷程式,並且設定中斷的觸發方式 5,判斷中...

樹莓派 單個按鍵檢測

先奉上原始碼 import rpi.gpio as gpio gpio.setwarnings false gpio.setmode gpio.bcm gpio.setup 17,gpio.in,pull up down gpio.pud up 接上輕觸開關,乙個腳接地 gpio.setup 18,...