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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

3回答

311閲覧

ラズパイで受信したデータ処理について

sphy

総合スコア21

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/01/22 05:52

トワイライト(dip×2+人感センサ)とラズパイZERO(monostick+リレー)で、人が通るとライトがついて時間が経過すると電気が消えるようなこと実現したいです。
無線で送信されたデータを受信してライトがつくところまでは問題なくできたのですが、そのあとのデータの処理の仕方で悩んでいます。

センサーには階段下A地点と階段下B地点があり、センサーを通過するとライトが点灯するのですが、Aを通過しライトが点灯中にB地点も通るため、消灯後に再度ライトが点灯してしまいます。

・A、Bは1秒ごとにデータを送信している
・A、Bが送信するデータは同じ形
・ラズパイは1秒ごとにデータを受信している

A地点で点灯中に、B地点でのデータを受信しつつも無視をするようなプログラムを作りたいのですがどのようにすればいいでしょうか?

python3

1#!/usr/bin/python3 2# coding: UTF-8 3 4import serial 5import time 6import RPi.GPIO as GPIO 7 8GPIO.setwarnings(False) 9GPIO.setmode(GPIO.BCM) 10GPIO.setup(4,GPIO.OUT) 11 12#USBでシリアル通信 13ser = serial.Serial( 14 port = '/dev/ttyUSB0', 15 baudrate = 115200, 16 parity = serial.PARITY_NONE, 17 bytesize = serial.EIGHTBITS, 18 stopbits = serial.STOPBITS_ONE, 19 timeout = None, 20 xonxoff = 0, 21 rtscts = 0, 22) 23 24def text(): 25 date = ser.readline() 26 date = date.strip() 27 date = str(date).strip("'"":""b") 28 return date 29 30 31 32try: 33 while True: 34 date = text() 35 if date[:2] == "rc":#あたまに"rc"が含まれる場合 36 if date[-1] == "1":#お尻に"1"が含まれる場合 37 GPIO.output(4,GPIO.HIGH) 38 time.sleep(30) 39 40 GPIO.output(4,GPIO.LOW) 41 time.sleep(10) 42 else: 43 pass 44except KeyboardInterrupt: 45 GPIO.cleanup() 46

イメージ説明

コンソールからの出力イメージ:
b001
b002
b003
rc001←A地点
b004
b005
rc001←B地点
b006

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

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

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

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

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

guest

回答3

0

プログラムではなく、モジュールの設定で解決できました。

投稿2020/01/25 17:21

sphy

総合スコア21

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

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

0

A地点とB地点でコマンド変えればそんでいい話では
ランプ点灯して一定時間内は他方のコマンドを無視すればいいだけですね

ましかし、Aから来るのとBから来るのがかぶってしまったら、それでは具合悪くありません?

投稿2020/01/22 06:43

編集2020/01/22 06:45
y_waiwai

総合スコア87774

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

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

0

ベストアンサー

入力値だけで判定するのではなく、
現在の状態(例えば最後に点灯した時刻やセンサー位置)をファイルなりDBなりに保存しておいて

入力値&現在の状態から次にあるべき状態を判定して点灯するかどうか決める

とすると簡単に実装できるかと思いますよ。

投稿2020/01/22 06:31

tanat

総合スコア18713

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問