Skip to content

Instantly share code, notes, and snippets.

@ma2shita
Last active August 31, 2020 03:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ma2shita/0569ab4717c49349889c9fbe1af25386 to your computer and use it in GitHub Desktop.
Save ma2shita/0569ab4717c49349889c9fbe1af25386 to your computer and use it in GitHub Desktop.
Ultrasonic Range sensor (US-100) test code (Let's try IoT Prototyping / MFT2020)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
# 距離を読む関数
def read_distance():
# 必要なライブラリのインポート・設定
import RPi.GPIO as GPIO
# 使用するピンの設定
GPIO.setmode(GPIO.BOARD)
TRIG = 11 # ボード上の11番ピン(GPIO17)
ECHO = 13 # ボード上の13番ピン(GPIO27)
# ピンのモードをそれぞれ出力用と入力用に設定
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.output(TRIG, GPIO.LOW)
# TRIG に短いパルスを送る
GPIO.output(TRIG, GPIO.HIGH)
time.sleep(0.00001)
GPIO.output(TRIG, GPIO.LOW)
# ECHO ピンがHIGHになるのを待つ
signaloff = time.time()
while GPIO.input(ECHO) == GPIO.LOW:
signaloff = time.time()
# ECHO ピンがLOWになるのを待つ
signalon = signaloff
while time.time() < signaloff + 0.1:
if GPIO.input(ECHO) == GPIO.LOW:
signalon = time.time()
break
# GPIO を初期化しておく
GPIO.cleanup()
# 時刻の差から、物体までの往復の時間を求め、距離を計算する
timepassed = signalon - signaloff
distance = timepassed * 17000
# 500cm 以上の場合はノイズと判断する
if distance <= 500:
return distance
else:
return None
def main():
while True:
distance = read_distance()
if distance:
print "距離: %.1f cm" % distance
time.sleep(1)
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment