import time
import board
import digitalio
import pulseio
TRIG_PIN = board.GP16
ECHO_PIN = board.GP17
# TRIG kimenet
trig = digitalio.DigitalInOut(TRIG_PIN)
trig.direction = digitalio.Direction.OUTPUT
trig.value = False
# PulseIn: mikrosekundumban méri a pulzusok hosszát
echo = pulseio.PulseIn(ECHO_PIN, maxlen=1, idle_state=False)
def measure_distance_cm(timeout_s=0.03) -> float:
echo.clear()
# TRIG impulzus az adatlap szerint: 10 µs HIGH
trig.value = False
time.sleep(0.000002) # 2 µs "rendezés"
trig.value = True
time.sleep(0.000010) # 10 µs
trig.value = False
t0 = time.monotonic()
while len(echo) == 0:
if time.monotonic() - t0 > timeout_s:
raise RuntimeError("Timeout")
pulse_us = echo.popleft() # mikrosekundum
cm = pulse_us * 0.01715
return cm
while True:
try:
d = measure_distance_cm()
print(f"Tavolsag: {d:6.1f} cm")
except RuntimeError as e:
print("Meresi hiba:", e)
time.sleep(0.2)