Raspberry Pi/シャットダウンボタンをつける
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#topicpath
----
#contents
**やってみる [#ud5d7729]
***物理的な接続 [#a2ae1876]
#ref(shutdown.png)
物理的には上記のように、GPI25 -> タストスイッチ → GND っ...
#ref(001.png)
番号の順に電流が流れます
#ref(002.png)
↑ツメの向きにご注意。
***コード [#ee5d3912]
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)...
if(isClick): #押してるときは
counter += 1
# 3秒おしぱなしだったら。
if(counter > max_counter):
counter = 0
shutdownMessage = 'shutdownします'
# speak( shutdownMessage )
sysout(shutdownMessage)
# return
subprocess.call('sudo shutdown -h no...
else:
time.sleep(interval)
else:
counter = 0
# 押下待ちののタイムアウト時間(2000ms)。...
GPIO.wait_for_edge(sw_pin, GPIO.FALLING,...
# 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_l...
# sysout(args[0])
# sysout(args[1]) でアクセス出来るが、args[0]はプロ...
main(sys.argv)
**関連リンク [#jc14afff]
https://github.com/masatomix/raspi_apps/tree/1.0.2
-[[ツール・ラボ » 電子工作入門コース » Raspberr...
-[[電子工作のコツ/ユニバーサル基板に挑戦 | 村田製作所>htt...
-[[プルアップのナゾ>http://startelc.com/elc/elc4_Pullup.h...
-[[FritzingでRaspberry Piを探す : 電子工作と3DCAD>http://...
-[[IoTを使ってトイレを監視! 電子工作でトイレが使用中かチ...
-[[NefryとMilkcocoaを連携させて、Webサイトにリアルタイム...
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
#topicpath
----
#contents
**やってみる [#ud5d7729]
***物理的な接続 [#a2ae1876]
#ref(shutdown.png)
物理的には上記のように、GPI25 -> タストスイッチ → GND っ...
#ref(001.png)
番号の順に電流が流れます
#ref(002.png)
↑ツメの向きにご注意。
***コード [#ee5d3912]
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)...
if(isClick): #押してるときは
counter += 1
# 3秒おしぱなしだったら。
if(counter > max_counter):
counter = 0
shutdownMessage = 'shutdownします'
# speak( shutdownMessage )
sysout(shutdownMessage)
# return
subprocess.call('sudo shutdown -h no...
else:
time.sleep(interval)
else:
counter = 0
# 押下待ちののタイムアウト時間(2000ms)。...
GPIO.wait_for_edge(sw_pin, GPIO.FALLING,...
# 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_l...
# sysout(args[0])
# sysout(args[1]) でアクセス出来るが、args[0]はプロ...
main(sys.argv)
**関連リンク [#jc14afff]
https://github.com/masatomix/raspi_apps/tree/1.0.2
-[[ツール・ラボ » 電子工作入門コース » Raspberr...
-[[電子工作のコツ/ユニバーサル基板に挑戦 | 村田製作所>htt...
-[[プルアップのナゾ>http://startelc.com/elc/elc4_Pullup.h...
-[[FritzingでRaspberry Piを探す : 電子工作と3DCAD>http://...
-[[IoTを使ってトイレを監視! 電子工作でトイレが使用中かチ...
-[[NefryとMilkcocoaを連携させて、Webサイトにリアルタイム...
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: