【ラズパイで猫ちゃんカメラ】 その8 テスト撮影用のスイッチ動作(GPIO)と全体
前回 前回はプログラムの自動起動について書きました 今回 GPIOを使って、スイッチの状態を読み取りテスト撮影などの機能を盛り込みます また、これまでの内容を総括した全体プログラムを紹介します 現在、猫カメラとして実働しているものになります お出かけには必須になりました 作ってよかった😁 間が結構飛んでいるかもしれませんが、大きな心でご容赦ください笑 スイッチの機能 カメラの設置場所を決めるために撮影用のスイッチをつけます 以下のような機能をつけます 短押し(5秒以下)でテスト撮影 長押し(5秒以上)でラズパイシャットダウン 撮ったらLINEします スイッチの状態を読み取ってみる スイッチは秋月電子でこれを買いました↓ プッシュスイッチは電源(3.3V)ースイッチーラズパイ のように接続します GPIO26に接続し、プルダウンに設定しています ですので何もしなければ0Vで、スイッチを押せばhigh(3.3V)となります whileループ内でスイッチの状態を読み取ります プルダウンとして設定しているので、何もしなければGPIO26の電圧はGNDレベル=0Vでありaの値をprintすると0となります スイッチを押すとGPIO26の電位がHigh=3.3Vとなるのでa=1となります ctrl + Cでwhileループから抜けて終了です import RPi.GPIO as GPIO button = 26 GPIO.setmode(GPIO.BCM) GPIO.setup(button,GPIO.IN,pull_up_down = GPIO.PUD_DOWN) # プルダウン try: while True: a = GPIO.input(button) print(a) except KeyboardInterrupt: # ctrl + C print('\nbreak') GPIO.cleanup(button) 短押し、長押し判定 割り込みは使っていません whileループ中に50msec毎にスイッチを見に行っています 50msecはチャタリングを考慮しての時間です ボタンを最初に押してから離すまでの時間を測り、5秒以下なら短押しと判定、5秒以上なら長押しと判定しています 長押しでシャットダウン import osをして sudo shutdown -h now を実行するだけです 長押し時の処理にこれを実行します 実働プログラム レビジョン7まで上げてやっと安定しました...