1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

# 人勧センサが感知している時間を正確に計測したい

myjlabアドベントカレンダー4日目。徹夜して頑張ります。

## 前提

pythonを使用します。ラズパイと人勧モジュールセンサを所持している。接続された状態である。接続に関してはこちらを参考にしてください

## 感知されている時間を計測する

sensor.py
``````import RPi.GPIO as GPIO
import time

start_time = None
time_list = []
array = [0]*7

GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.IN) #18はセンサと接続しているpin番号の例

def calculate(x, y):
delta_time = x - y
delta_second = delta_time.total_seconds()
return delta_second

try:
while True:
for i in range(7):
array[i] = GPIO.input(18)
time.sleep(1)
if array[0] == GPIO.HIGH or array[1] == GPIO.HIGH or array[2] == GPIO.HIGH or  array[3] == GPIO.HIGH or  array[4] == GPIO.HIGH or array[5] == GPIO.HIGH or array[6] == GPIO.HIGH:
if start_time is None:
start_time = datetime.now()
time.sleep(53)
else:
if start_time is None:
time.sleep(53)
else:
finish_time = datetime.now()
delta_second = calculate(finish_time, start_time)
time_list.append(delta_second)
start_time = None
time.sleep(53)

except KeyboardInterrupt:
print(time_list)
GPIO.cleanup()
``````

ここでみそとなるのはこの部分です。

``````for i in range(7):
array[i] = GPIO.input(18)
time.sleep(1)
if array[0] == GPIO.HIGH or array[1] == GPIO.HIGH or array[2] == GPIO.HIGH or  array[3] == GPIO.HIGH or  array[4] == GPIO.HIGH or array[5] == GPIO.HIGH or array[6] == GPIO.HIGH:
if start_time is None:
``````

## 終わりに

Register as a new user and use Qiita more conveniently

1. You get articles that match your needs
2. You can efficiently read back useful information
What you can do with signing up
1
Help us understand the problem. What are the problem?