Top / Raspberry Pi / シャットダウンボタンをつける

やってみる

物理的な接続

shutdown.png

物理的には上記のように、GPI25 -> タストスイッチ → GND って感じで繋ぎます。タクトスイッチに関してはツメの向きにご注意です。

001.png

番号の順に電流が流れます

002.png

↑ツメの向きにご注意。

コード

import RPi.GPIO as GPIO
import sys,time,signal,os
import subprocess

from myutils import contains,cleanup,sysout

# 25からはじまりGNDへ落ちる回路を組む。
# これは物理的な配置番号ではなく、GPIO の番号。
sw_pin = 25

def main(args):
    signal.signal(signal.SIGINT, cleanup)
    signal.signal(signal.SIGTERM, cleanup)

    GPIO.setmode(GPIO.BCM)
    GPIO.setup(sw_pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

    interval = 0.1  # ボタン押下中のチェックインターバル(秒)
    shutdown_second = 3 # Shutdownまでのボタン押下時間(秒)
    max_counter = shutdown_second / interval
    print(max_counter)

    try:
        counter = 0
        while True:
            #押した直後なのでゼロ
            state = GPIO.input(sw_pin)
            # 押しているときは0、それ以外で分岐。
            isClick = not(state)
            sysout("Switchの状態:{0}".format(isClick))
            sysout("Counter: [{0:3.1f}]".format(counter)) # 全体で3桁、小数点1桁

            if(isClick): #押してるときは
                counter += 1
                # 3秒おしぱなしだったら。
                if(counter > max_counter):
                    counter = 0
                    shutdownMessage = 'shutdownします'
                    # speak( shutdownMessage )
                    sysout(shutdownMessage)
                    # return
                    subprocess.call('sudo shutdown -h now',shell=True)
                else:
                    time.sleep(interval)
            else:
                counter = 0
                # 押下待ちののタイムアウト時間(2000ms)。設定しておかないとアプリが終了できない
                GPIO.wait_for_edge(sw_pin, GPIO.FALLING, timeout=3000)
                # GPIO.wait_for_edge(sw_pin, GPIO.FALLING)

    except Exception as e:
        raise
    finally:
        sysout("clean up")
        GPIO.cleanup()


if __name__ == '__main__':
    # http://www.python-izm.com/contents/basis/command_line_arguments.shtml
    # sysout(args[0])
    # sysout(args[1]) でアクセス出来るが、args[0]はプログラム名。
    main(sys.argv)

関連リンク

https://github.com/masatomix/raspi_apps/tree/1.0.2


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Raspberry Pi / シャットダウンボタンをつける

現在のアクセス:1599


添付ファイル: fileshutdown.png 430件 [詳細] file002.png 395件 [詳細] file001.png 453件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-04 (水) 00:43:13 (2208d)