トワイライト(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
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。