実現したいこと
Raspberrypi4 を使用しています。
一定時間HC-SR04で距離を測定したいです。
36,000秒の間、毎秒csvに時間と距離を記録
上記の動作を目的としております。
以下のプログラムを起動中、2時間程でエラーメッセージもなく動作しなくなりました。
数秒~1時間程度は問題なく動作するのですが、
2時間程度経つと何の表示もなく動かない状態になります。
原因と対策をご教授いただければ幸いです。
発生している問題・エラーメッセージ
エラーメッセージ
なし
該当のソースコード
Python3
ソースコード
import time
import RPi.GPIO as GPIO
import datetime
import csv
PIN_TRIG = 24
PIN_ECHO = 25
SPEED_OF_SOUND = 33145
def init_GPIO():
# GPIOの初期設定
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(PIN_TRIG, GPIO.OUT) GPIO.setup(PIN_ECHO, GPIO.IN)
def calc_distance():
# 0.5秒ほど落ち着かせれる
GPIO.output(PIN_TRIG, GPIO.LOW)
time.sleep(0.5)
# 0.5秒間、超音波を発射
GPIO.output(PIN_TRIG, True)
time.sleep(0.5)
GPIO.output(PIN_TRIG, False)
# 超音波が跳ね返ってくるまでの時間を計測 while GPIO.input(PIN_ECHO) == 0: signaloff = time.time() while GPIO.input(PIN_ECHO) == 1: signalon = time.time() time_passed = signalon - signaloff # 距離を計算する(音速 * 超音波を出力、戻ってくるまでの時間 / 2) distance = SPEED_OF_SOUND * time_passed / 2 return distance
init_GPIO()
#32400秒測定する
for measure in range(32400):
# 0.5 * 20 で、10秒間、0.5秒間隔で測定結果を表示 # 測定結果が約0.5秒で取得されるので、 # 0.5秒毎に距離が測定される distance = f'{calc_distance():.3f}' today = datetime.date.today() today = str(today).replace('-','') with open(today + 'data.csv','a') as f: now = datetime.datetime.now() recordtime = '{0:%H:%M:%S}'.format(now) writer = csv.writer(f) writer.writerow([recordtime,distance]) f.close() print(recordtime,distance)
GPIO.cleanup()
補足情報(FW/ツールのバージョンなど)
・Raspberrypi4 B
・HC-SR04

0 コメント