🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

1回答

1876閲覧

raspberrypi 焦電型赤外線センサーの動かし方

akakingyo

総合スコア5

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2019/09/10 01:54

編集2019/09/10 02:23
コード ```### 前提・実現したいこと 焦電型赤外線センサーを使って人が作業をしているところを撮影したい。 その時に通りすがりは撮影したくないので、センサーに3回反応があったら撮影し初期状態に。 センサーに反応がない状態が5回続くと初期状態に戻る。 ### 発生している問題・エラーメッセージ センサー自体の反応ではなく、決まったパターンでしか動いてない。 1回目の反応があったあと、4回反応が無かったら撮影してしまう。 ### 該当のソースコード ``````ここに言語を入力 import traceback from functools import wraps import time import RPi.GPIO as GPIO import picamera from datetime import datetime import os from os import path __author__ = 'isann' def wrapper(func): @wraps(func) def _func(*args, **keywords): try: func(*args, **keywords) except Exception: traceback.print_exc() return _func @wrapper def main(): sleeptime = 2 Interval = 5 sensor_pin = 18 GPIO.setmode(GPIO.BCM) GPIO.setup(sensor_pin, GPIO.IN) cam = picamera.PiCamera() cam.resolution = (512, 360) cam.shutter_speed = 10000 record_folder = '/home/pi/Camera' usb_folder = '/media/pi/ESD-USB/Camera' try: print ('処理キャンセル:CTRL+C') cnt = 1 resetcnt = 1 while True: sys_date = time.strftime('%Y%m%d%H%M%S') filename = sys_date + '.jpg' save_file = record_folder + '/' + filename # センサー感知 if (GPIO.input(sensor_pin) == GPIO.HIGH): print(datetime.now().strftime('%Y/%m/%d %H:%M:%S') + ":" + str("{0:05d}".format(cnt)) + "回目の人感知") time.sleep(sleeptime) cnt = cnt + 1 resetcnt = 1 time.sleep(sleeptime) if cnt == 3: print('shot!!!!') if path.exists(usb_folder): cam.capture(save_file) time.sleep(sleeptime) cnt = 1 resetcnt = 1 continue else: cam.capture(save_file) time.sleep(sleeptime) cnt = 1 resetcnt = 1 continue else: print(GPIO.input(sensor_pin)) resetcnt = resetcnt + 1 if resetcnt > 4: cnt = 1 resetcnt = 1 time.sleep(Interval) GPIO.cleanup() except KeyboardInterrupt: print ("Quit") finally: print ("clean up") GPIO.cleanup() if __name__ in '__main__': main()
```ここに言語を入力 pyhon3

試したこと

~回反応したら撮影、~回反応がなかったらリセット、USBがあればUSBへ無ければ本体へ保存というところまではできてると思います。

補足情報(FW/ツールのバージョンなど)

センサーの動かし方はこれでよいのか、もしくは根本から違うのかが知りたいです。
もし、違うのであればヒントを頂けると助かります。
プログラミング初心者なので、至らない点もあるかと思いますがよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/09/10 01:57

このままではコードが見づらいので、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください
akakingyo

2019/09/10 02:00

申し訳ありません。編集して上げなおしたいと思います。
akakingyo

2019/09/10 02:23

修正できたと思います。引き続きよろしくお願いいたします。
guest

回答1

0

ベストアンサー

2つ目のifのインデントがおかしいんじゃないですかね
現状では最初のifが終わって改めてifが来ていて
そのためにelse以降がおかしくなってます

投稿2019/09/10 02:32

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akakingyo

2019/09/10 06:40

早速の返答ありがとうございます。回答を参考に修正を行ってみたいと思います。
akakingyo

2019/09/10 07:18

ifを修正後、少し書き足したら思い通りに動くようになりました!本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問