注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!
4.1.1 カメラ¶
はじめに¶
このセクションでは、ボタンを押すとLEDが点滅しながら写真を撮るカメラを作成します。
必要な部品¶
このプロジェクトに必要なパーツは以下の通りです。
一式をまとめて購入する方が便利です。リンクはこちらです:
名前 |
このキットのアイテム |
リンク |
---|---|---|
Raphael Kit |
337 |
以下のリンクから、各パーツを個別に購入することもできます。
コンポーネントの紹介 |
購入リンク |
---|---|
回路図¶
T-Board Name |
physical |
wiringPi |
BCM |
GPIO17 |
Pin 11 |
0 |
17 |
GPIO18 |
Pin 12 |
1 |
18 |
実験手順¶
ステップ1: 回路を組み立てます。
ステップ2: カメラモジュールを接続し、設定を完了してください。詳しくは カメラモジュール を参照。
ステップ3: Raspberry Piデスクトップに入ります。より良い体験のためにスクリーンが必要かもしれません: Raspberry Piを接続する を参照してください。リモートからRaspberry Piのデスクトップにアクセスすることもできます。詳しいチュートリアルは リモートデスクトップ を参照してください。
ステップ4: ターミナルを開き、コードのディレクトリに移動します。
cd ~/raphael-kit/python/
ステップ5: コードを実行します。
sudo python3 4.1.1_Camera.py
コードが実行されると、ボタンを押すとRaspberry PiはLEDを点滅させて写真を撮ります。写真は my_photo.jpg
という名前で ~
ディレクトリに保存されます。
注釈
PythonのIDEで ~/raphael-kit/python/
の 4.1.1_Camera.py
を開き、実行ボタンでコードを実行、ストップボタンでコードを停止することもできます。
PCに写真をダウンロードする方法については Filezilla Software をご参照ください。
コード
注釈
コードは 修正/リセット/コピー/実行/停止 が可能です。ただし、その前に raphael-kit/python
のようなソースコードのディレクトリに移動する必要があります。
#!/usr/bin/env python3
from picamera import PiCamera
import RPi.GPIO as GPIO
import time
import os
user = os.getlogin()
user_home = os.path.expanduser(f'~{user}')
camera = PiCamera()
LedPin = 17 # Set GPIO17 as LED pin
BtnPin = 18 # Set GPIO18 as button pin
status = False
def setup():
GPIO.setmode(GPIO.BCM)
GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH)
GPIO.setup(BtnPin, GPIO.IN)
camera.start_preview(alpha=200)
def takePhotos(pin):
global status
status = True
def main():
global status
GPIO.add_event_detect(BtnPin, GPIO.FALLING, callback=takePhotos)
while True:
if status:
for i in range(5):
GPIO.output(LedPin, GPIO.LOW)
time.sleep(0.1)
GPIO.output(LedPin, GPIO.HIGH)
time.sleep(0.1)
camera.capture(f'{user_home}/my_photo.jpg')
print ('Take a photo!')
status = False
else:
GPIO.output(LedPin, GPIO.HIGH)
time.sleep(1)
def destroy():
camera.stop_preview()
GPIO.output(LedPin, GPIO.HIGH)
GPIO.cleanup()
if __name__ == '__main__':
setup()
try:
main()
except KeyboardInterrupt:
destroy()
コード説明
GPIO.add_event_detect(BtnPin, GPIO.FALLING, callback=takePhotos)
BtnPin
のイベントを設定し、ボタンが押された場合(ハイレベルからローレベルに変化)に takePhotos()
関数を呼び出します。
def takePhotos(pin):
global status
status = True
takePhotos()
が呼び出された際に、 status
を True
に設定します。
if status:
for i in range(5):
GPIO.output(LedPin, GPIO.LOW)
time.sleep(0.1)
GPIO.output(LedPin, GPIO.HIGH)
time.sleep(0.1)
camera.capture(f'{user_home}/my_photo.jpg')
print ('Take a photo!')
status = False
else:
GPIO.output(LedPin, GPIO.HIGH)
time.sleep(1)
status
が True
であれば、Raspberry PiはLEDを点滅させて写真を撮ります。写真は my_photo.jpg
という名前で ~
ディレクトリに保存されます。