前提 実現したいこと
RaspberryPiを用いて、測距センサ(HC-SR04)で出力される距離データを約1秒間隔でテキストファイルに書き込みたいです。
発生している問題・エラーメッセージ
エラーメッセージが出ているわけではなく、プログラム自体は動いているようですが、
テキストファイルが作成されるのみで、肝心の距離データが1行も書き込まれていません。
以下のコードを実行しているのですが、原因や対処法をご教示いただけないでしょうか。
該当のソースコード
Python
1import RPi.GPIO as GPIO 2import time 3import math 4from time import sleep 5import sys 6import datetime 7 8 9GPIO.setwarnings(False) 10GPIO.setmode(GPIO.BCM) 11 12#ポート番号の定義 13Trig = 27 #変数"Trig"に27を代入 14Echo = 22 #変数"Echo"に22を代入 15 16#GPIOの設定 17GPIO.setmode(GPIO.BCM) #GPIOのモードを"GPIO.BCM"に設定 18GPIO.setup(Trig,GPIO.OUT) #GPIO27を出力モードに設定 19GPIO.setup(Echo, GPIO.IN) #GPIO22を入力モードに設定 20 21file = open("ultrasonic_data.txt", "a") 22 23#HC-SR04で距離を測定する関数 24def read_distance(): 25 GPIO.output(Trig, GPIO.HIGH) #GPIO27の出力をHigh(3.3V)にする 26 time.sleep(0.00001) #10μ秒間待つ 27 GPIO.output(Trig, GPIO.LOW) #GPIO27の出力をLow(0V)にする 28 29 while GPIO.input(Echo) == GPIO.LOW: #GPIO22がLowの時間 30 sig_off = time.time() 31 while GPIO.input(Echo) == GPIO.HIGH: #GPIO22がHighの時間 32 sig_on = time.time() 33 34 duration = sig_on - sig_off #GPIO18がHighしている時間を算術 35 distance = duration * 34000 / 2 #距離を求める(cm) 36 return distance 37 38 39 40#連続して値を超音波センサの状態を読み取る 41while True: 42 try: 43 file.write(str(read_distance()) + "\n") 44 time.sleep(1) 45 46 except KeyboardInterrupt: #Ctrl+Cキーが押された 47 GPIO.cleanup() #GPIOをクリーンアップ 48 sys.exit() #プログラム終了
試したこと
file.write(str(read_distance()) + "\n")
のコードを
print(read_distance())
に置き換えると、連続した距離データが出力される状態なので、距離データの取得はできています。
補足情報(FW/ツールのバージョンなど)

回答1件
あなたの回答
tips
プレビュー