さて、大詰めまでやってきました。ボタンを押したらLEDが点灯して、シャッターが切れるというプログラムに取り掛かります。配線は先ほどのタクトスイッチ+LEDと同じで、プログラムの内容を少し変えます。ただし基本的にはこれまで組んできたプログラムの位置を少し変えるだけなので、どのような動作になっているのかは分かりやすいかもしれません。プログラムは以下のようになります。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import subprocess
import datetime
import time
LEDPIN = 10 # LEDは10番
BUTTON = 12 # シャッターボタンは12番
GPIO.setmode(GPIO.BOARD) # ピン番号で配線
GPIO.setup(LEDPIN, GPIO.OUT)
GPIO.setup(BUTTON, GPIO.IN)
def shoot(BUTTON):
GPIO.output(LEDPIN, GPIO.HIGH)
time.sleep(0.5)
GPIO.output(LEDPIN, GPIO.LOW)
now = datetime.datetime.now()
DATE = now.strftime('%Y%m%d_%H%M%S')
savephoto="/home/pi/Pictures/"+ DATE +".jpg"
subprocess.call(["raspistill", "-o" ,savephoto])
GPIO.add_event_detect(BUTTON, GPIO.RISING, callback = shoot, bouncetime = 100)
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print('\nStop!\n') # Ctrl+Cで中断
GPIO.cleanup()
このプログラムをこれまでと同様にnanoなどで記述し、「shoot_led.py」のようにファイル名を決めて保存しましょう。
このプログラムですが、ボタンを押したときの動作を「shoot」で定義し、「GPIO.add_event_detect」はGPIOエッジ検出コールバック関数といい、ボタンが押されたときに「shoot」の内容を実行させるものです。「bouncetime」は、連続して動作することで不安定になる「チャタリング」を防止するため、イベントを検出すると指定するミリ秒、ここでは100ミリ秒(0.1秒)は次のイベントを起こさないようにしています。
保存したら以下のように入力して実行してみましょう。
$ python shoot_led.py
ボタンを押したらシャッターが切れ、LEDが点灯したでしょうか。画像は先ほどと同様にホームディレクトリの「Pictures」に保存されています。
ここまで2回にわたりHQカメラの使い方についてご紹介してきました。ラズパイとボタンを箱のようなものに組み込んでモバイルバッテリーで動作させれば、デジカメのような使い方ができるかもしれません。
本格的な撮影が楽しめる公式カメラモジュール「Raspberry Pi High Quality Camera」を試す
ラズパイで新型コロナウイルス解析に参加する 〜Ubuntu Serverの構築編〜
ラズパイでスマートスピーカーを作る 「アレクサ!あしたの天気は?」 〜ソフトウェア準備編〜
これが“らずキャン△”だ! キャンプ場で役立つ「気温・湿度・気圧センサー」の作り方
ラズパイで「YouTube」と「Amazon プライムビデオ」を見る
ラズパイで自宅ファイルサーバを作る
ラズパイで動体検知対応の監視カメラを作るCopyright © ITmedia, Inc. All Rights Reserved.
Special
PR