#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)) # 全体で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) **関連リンク [#jc14afff] https://github.com/masatomix/raspi_apps/tree/1.0.2 -[[ツール・ラボ » 電子工作入門コース » RaspberryPi電子工作入門>https://tool-lab.com/make-course/raspberrypi/]] 必読 -[[電子工作のコツ/ユニバーサル基板に挑戦 | 村田製作所>https://www.murata.com/ja-jp/campaign/ads/japan/elekids/ele/craft/knack/universal]] 半田ごて久しぶり。。 -[[プルアップのナゾ>http://startelc.com/elc/elc4_Pullup.html]] -[[FritzingでRaspberry Piを探す : 電子工作と3DCAD>http://robocad.blog.jp/archives/573772.html]] -[[IoTを使ってトイレを監視! 電子工作でトイレが使用中かチェックする仕組みを作ってみた - ICS MEDIA>https://ics.media/entry/10746/3]] おもしろい -[[NefryとMilkcocoaを連携させて、WebサイトにリアルタイムでPush通知してみる | 株式会社LIG>https://liginc.co.jp/282918]] ---- この記事は #vote(おもしろかった,そうでもない) #comment #topicpath SIZE(10){現在のアクセス:&counter;}