반응형
1. 초음파센서 거리 측정하기
- VCC : VBUS
- GND : GND
- Trigger : GPIO 12번
- Echo : GPIO 20번
# VCC는 VBUS에 GND는 GND에 연결, Trig는 12번, Echo는 20번 핀에 연결
from machine import Pin
import time
# 트리거 핀과 에코 핀 설정
trigger_pin = Pin(12, Pin.OUT)
echo_pin = Pin(20, Pin.IN)
# 초음파 센서를 이용해 거리 측정
def measure_distance():
# 트리거 핀을 통해 10us 동안 초음파 신호 발생
trigger_pin.low()
time.sleep_us(2)
trigger_pin.high()
time.sleep_us(10)
trigger_pin.low()
# 에코 핀이 HIGH 상태가 될 때까지 기다림
while echo_pin.value() == 0:
pass
start = time.ticks_us()
# 에코 핀이 LOW 상태가 될 때까지 기다림
while echo_pin.value() == 1:
pass
end = time.ticks_us()
# 시간 측정
duration = time.ticks_diff(end, start)
# 음속(340 m/s)을 이용해 거리 계산
# 거리 = (시간(초) * 음속(미터/초)) / 2 (왕복이므로 2로 나눔)
distance = (duration * 340.0) / (1000000 * 2)
return distance
# 메인 루프
while True:
distance = measure_distance()
print('Distance:', distance*100, 'cm')
time.sleep(0.1)
2. picozero 라이브러리 설치
메뉴->도구->패키지 관리에서 'picozero'검색하여 설치
- GPIO핀 : Trigger : 12, Echo :20 번
# picozero 라이브러리에서 DistanceSensor 클래스 사용
from picozero import DistanceSensor
# 시간 지연을 위해 time 모듈에서 sleep 함수를 사용
from time import sleep
# 초음파 거리 센서 초기화
distanceSensor = DistanceSensor(trigger=12, echo=20)
# 무한 루프를 실행합니다.
# 사용자가 강제로 종료하기 전까지 반복합니다.
while 1 :
# 현재 측정된 거리를 센티미터(cm) 단위로 출력합니다.
# 측정된 거리는 소수점 세 자리까지 표시합니다.
print( 0, f"{distanceSensor.distance * 100:6.3f} cm" )
sleep(0.1) # 0.1초 동안 대기합니다. 초당 약 10번 측정합니다.
pass
반응형
'피지컬컴퓨팅 > 라즈베리파이 피코' 카테고리의 다른 글
라즈베리파이 피코 : TFT ILI9341 터치 디스플레 (0) | 2025.05.30 |
---|---|
라즈베리파이 피코 - LCD (0) | 2025.05.29 |
라즈베리파이 피코 : 디지털 데이터 읽기 쓰기 - 터치센서, 푸시버튼, LED (0) | 2025.05.28 |
라즈베리파이 피코 : 아날로그 데이터 읽기 쓰기 - 습도 센서 , 조이스틱, 서보모터 (0) | 2025.05.28 |
라즈베리파이 피코 시리얼통신, Mediapipe 활용 (0) | 2025.05.28 |