라즈베리파이_초음파센서 사용(파이썬; Python)
- BreadBoard에 초음파센서 장착 후 라즈베리파이와 연결
- 파이썬 소스코드 작성
- vi ultraSonic.py : vi를 이용해서 ultraSonic.py 소스 코드 작성
vi가 어려우면 nano ultraSonic.py
저장시 인코딩(Encoding)을 UTF-8로 설정하면 한글 사용 가능(파이썬 2.7버전에서)
123456789101112131415161718192021222324252627282930313233343536#!/usr/bin/env python3#-*- coding:utf-8 -*-import RPi.GPIO as gpioimport timeTRIGER = 24ECHO = 23gpio.setmode(gpio.BCM)gpio.setup(TRIGER, gpio.OUT)gpio.setup(ECHO, gpio.IN)#period = endTime - startTime에서 startTime값이 null인 경우 발생->초기화startTime = time.time()try:while True:gpio.output(TRIGER, gpio.LOW)time.sleep(0.1)gpio.output(TRIGER, gpio.HIGH)time.sleep(0.00002)gpio.output(TRIGER, gpio.LOW)while gpio.input(ECHO) == gpio.LOW:startTime = time.time() # 1sec unitwhile gpio.input(ECHO) == gpio.HIGH:endTime = time.time()period = endTime - startTimedist1 = round(period * 1000000 / 58, 2)dist2 = round(period * 17241, 2)print("Dist1", dist1, "cm", ", Dist2", dist2, "cm")except:gpio.cleanup() - python3 ultraSonic.py : 실행
- 또다른 실행 방법
- chmod 755 ultraSonic.py
- ./ultraSonic.py
- 또다른 실행 방법
- 소스 코드 설명 : 출처(https://fancyfantasysciencelab.tistory.com/9)
- gpio 번호 / pin 번호
- C 언어에서는 wPi 번호 사용(5, 4) : TRIGER 5, ECHO 4
- 파이썬은 BCM 번호 사용(24, 23) : TRIGER 24, ECHO 23
- 초음파의 속도 : (331.5 + 0.6 * 온도)m/s
- startTime : Echo 입력이 Low에서 High로 바뀌는 시간(초 단위)
- endTime : Echo 입력이 다시 Low로 바뀌는 시간(초 단위)
- period : Pulse의 폭(endTime – startTime), 그림에서 Techo
- dist1 = period * 1000000 / 58 <- 초 단위를 100만분의 1초로 변경
- dist2 = period * 17241 <- 초 단위를 100만분의 1초로 변경
- gpio 번호 / pin 번호
- vi ultraSonic.py : vi를 이용해서 ultraSonic.py 소스 코드 작성