前提・実現したいこと
以下の参考記事にしたがって、超音波距離センサ(HC-SR04)をRaspberryPiで使って値を取得しようとしています。
参考記事
発生している問題・エラーメッセージ
記事に掲載されている通りにセンサを接続し、コードを書いたのですが、以下のエラーが出てどのように修正すればいいか検討がつきません。
$ python sample.py sample.py:47: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings. GPIO.setup(TRIG_PIN, GPIO.OUT) Traceback (most recent call last): File "sample.py", line 52, in <module> calc_distance(TRIG_PIN, ECHO_PIN, 10, v) File "sample.py", line 32, in calc_distance distance = v * t/2 TypeError: unsupported operand type(s) for *: 'int' and 'NoneType'
該当のソースコード
Python
1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3import RPi.GPIO as GPIO 4import time 5 6#HIGH or LOWの時間測 7def pulseIn(PIN, start=1, end=0): 8 if start == 0: 9 end = 1 10 t_start = 0 11 t_end = 0 12 #ECHO_PINがHIGHである時間を計測 13 while GPIO.input(PIN) == end: 14 t_start = time.time() 15 while GPIO.input(PIN) == start: 16 t_end = time.time() 17 return t_end - t_start 18 19#距離計測 20def calc_distance(TRIG_PIN, ECHO_PIN, num, v=34000): 21 for i in range(num): 22 #TRIGピンを0.3[s]だけLOW 23 GPIO.output(TRIG_PIN, GPIO.LOW) 24 time.sleep(0.3) 25 #TRIGピンを0.00001[s]だけ出力(超音波発車) 26 GPIO.output(TRIG_PIN, True) 27 time.sleep(0.00001) 28 GPIO.output(TRIG_PIN, False) 29 #HIGHの時間計測 30 t = pulseIn(ECHO_PIN) 31 #距離[cm] = 音速[cm/s] * 時間[s]/2 32 distance = v * t/2 33 print(distance, "cm") 34 #ピン設定解除 35 GPIO.cleanup() 36 37#TRIGとECHOのGPIO番号 38TRIG_PIN = 14 39ECHO_PIN = 15 40 41#気温24[℃]の場合の音速[cm/s] 42v = 33150 + 60*24 43 44#ピン番号をGPIOで指定 45GPIO.setmode(GPIO.BCM) 46#TRIG_PINを出力、ECHO_PINを入力 47GPIO.setup(TRIG_PIN, GPIO.OUT) 48GPIO.setup(ECHO_PIN, GPIO.IN) 49GPIO.setwarnings(False) 50 51#距離計測(TRIGピン番号、ECHO_PIN番号、計測回数、音速[cm/s]) 52calc_distance(TRIG_PIN, ECHO_PIN, 10, v)
試したこと
distance = int(v) * int(t/2)
といったようなことも試みましたが、エラーが出ました。
補足情報(FW/ツールのバージョンなど)
Python 2.7.13
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。