質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Raspberry Pi

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

4245閲覧

Raspberry Pi と人感センサー・Python

_balvin_jbr05

総合スコア13

Raspberry Pi

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/11/14 11:09

編集2018/11/14 12:19

こんばんは。
Raspberry Pi3 B+ と、人感センサのHS-SR501を組み合わせてシステムを作っています。

10分経っても人感センサが反応をキャッチできなかったらRaspberry と、赤外線人感センサ・HS-SR501を組み合わせて、
”10分間反応が検知されなければ人がいない旨を、PCのプログラミングの画面(真っ黒の画面)表示するプログラム”
を書きたいです。

参考にしているのはqiitaの Raspberry Piを使って蝉を鳴かせよう
https://qiita.com/cigalecigales/items/4cf9c16f24d1de92ec7d
です。

書いてみたプログラムです(変なところで改行されたりしています。すみません。)

import time
import datetime
import RPi GPIO as GPIO

INTAVAL = 600
SLEEPTIME = 600
SENSOR_PIN = 18

GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR _PIN,GPIO.IN)

st - time.time () - INTAVAL

while true
now = time.time()
sensor = GPIO.input(SENSOR_PIN)

if (sensor == GPIO HIGH) and (st + INTAVAL < now ): print datetime.datetime.fromtimestamp(now), sensor, “人がいます” st == time.time() else: print datetime.datetime.fromtimestamp(now), sensor, “人がいません。人を呼んでください。" times.sleep(SLEEPTIME)

10分間反応を検知されなければ、
“人がいません。人を呼んでください。”
と表示させたいので、その指令を出すプログラミングを教えてください。

10分ごとに反応有る無しが表示されるところまではできました。

プログラミング初心者です。
よろしくお願いいたします。

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

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

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

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

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

can110

2018/11/14 11:16

①「10分経っても」②「人感センサが反応をキャッチできなかったら」③「Raspberry Pi からIFTTT と連携して」④「g-mailに知らせる」のうち分からない部分はどこでしょうか?(全部?)
guest

回答2

0

ベストアンサー

あとは一定時間反応がない,一定時間ずっと”人がいません”と表示され続けたら、>>>”人を呼んでください”と表示する

をしたいです。

最後に反応した日時を保持しておき、現在日時との差分をとって一定時間経過すればセンサループを抜けるようにすればよいです。

Python

1last = None # 最後に反応した日時 2 3import datetime,time 4while True: 5 now = datetime.datetime.now() 6 7 # 一定時間、無反応だったら抜ける 8 if last is not None and (now-last).total_seconds() > 10: 9 break 10 11 # センサ入力 12 inp = input('sensor:') # センサの代わり。何か入力=反応ありとする 13 if len(inp) > 0: 14 last = now 15 else: 16 print('人がいません') 17 18 time.sleep(0.01) # 必要に応じ 19 20print('人を呼んでください')

投稿2018/11/14 20:54

can110

総合スコア38256

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

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

0

まずは人感センサが反応したら画面に、反応した、と表示するコードを作りなさい。
これぐらいはできるでしょ

投稿2018/11/14 12:30

y_waiwai

総合スコア87747

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

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

_balvin_jbr05

2018/11/14 12:33

それは出来てます。 あとは一定時間反応がない,一定時間ずっと”人がいません”と表示され続けたら、>>>”人を呼んでください”と表示する をしたいです。 表現めちゃくちゃにですみません
y_waiwai

2018/11/14 12:35

なら、反応したらタイマをリセットするようにして、タイマが10分経過したら、人がいません、と表示すればいいでしょ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問