반응형
초음파 사용기(HC-SR04)
초음파라하여 굉장히 있어보이지만, 사실 별게 아니었다.
제품 이름은 "HC-SRO4"로 2000원 정도에 하나를 구매할 수 있다.
거리를 return 하는 함수이다.
선행 작업으로는 GPIO 핀연결을 잘 확인해서 연결해놔야한다.
나는 아래 두개를 이용했다.
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
TRIG=26
ECHO=6
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
def reading_distance():
global signal_off
GPIO.output(TRIG, GPIO.LOW)
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO)==0:
signal_off = time.time()
while GPIO.input(ECHO)==1:
signal_on = time.time()
if ((signal_on - signal_off) * 170) > 0.7:
return 70
timepassed = signal_on - signal_off
distance = timepassed * 17000
return distance
대략적으로 분석한 바는 0.00001초 사이에 TRIG 를 ON/OFF 하면서 밖으로 초음파를 날리는 것 같다.
그 다음 ECHO에서 받아주는 걸 계산하는 것이다.
return 200으로 뺀 것은 70cm 이상이라 판단한 것은 빠른 return을 위해 그냥 200으로 준 것이다.
(이렇게 한 이유는 초음파 측정거리가 최대 4m인데 농구게임에서는 최대 70cm면 충분해서 MAX 70cm로 놓은 것이다)
아래는 예제코드로 올라와 있는 소스이다.
(이걸 응용해서 하면 위의 코드보다 좀 더 잘할 수 있을것 같다)
#Libraries
import RPi.GPIO as GPIO
import time
#GPIO Mode (BOARD / BCM)
GPIO.setmode(GPIO.BCM)
#set GPIO Pins
GPIO_TRIGGER = 18
GPIO_ECHO = 24
#set GPIO direction (IN / OUT)
GPIO.setup(GPIO_TRIGGER, GPIO.OUT)
GPIO.setup(GPIO_ECHO, GPIO.IN)
def distance():
# set Trigger to HIGH
GPIO.output(GPIO_TRIGGER, True)
# set Trigger after 0.01ms to LOW
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER, False)
StartTime = time.time()
StopTime = time.time()
# save StartTime
while GPIO.input(GPIO_ECHO) == 0:
StartTime = time.time()
# save time of arrival
while GPIO.input(GPIO_ECHO) == 1:
StopTime = time.time()
# time difference between start and arrival
TimeElapsed = StopTime - StartTime
# multiply with the sonic speed (34300 cm/s)
# and divide by 2, because there and back
distance = (TimeElapsed * 34300) / 2
return distance
if __name__ == '__main__':
try:
while True:
dist = distance()
print ("Measured Distance = %.1f cm" % dist)
time.sleep(1)
# Reset by pressing CTRL + C
except KeyboardInterrupt:
print("Measurement stopped by User")
GPIO.cleanup()
반응형
'장인으로의 여정 > 라즈베리파이' 카테고리의 다른 글
[라즈베리파이3] 음악 넣기 (2) | 2016.06.15 |
---|---|
[라즈베리파이3] Dotmatix 사용기 (0) | 2016.06.15 |
[라즈베리파이3] bcm2835 download 경로 (0) | 2016.05.03 |
댓글