from machine import Pin
import utime, time
from time import sleep
import rp2
from rp2 import PIO
trigger = Pin(3, Pin.OUT)
echo1 = Pin(2, Pin.IN)
speaker = Pin(0, Pin.OUT)
@rp2.asm_pio(out_init=[PIO.OUT_LOW])
def echo():
wrap_target()
mov(pins, isr)
mov(isr, invert(isr))
pull(noblock)
mov(x, osr)
mov(y, x)
label("loop")
jmp(y_dec, "loop")
wrap()
sm = rp2.StateMachine(0, echo, freq=1_000_000, out_base=Pin(7))
sm.active(1)
def play(freq):
if freq:
sm.put(1_000_000//freq)
else:
sm.put(0)
def ultra(frec):
trigger.low()
utime.sleep_us(2)
trigger.high()
utime.sleep_us(5)
trigger.low()
while echo1.value() == 0:
signaloff = utime.ticks_us()
while echo1.value() == 1:
signalon = utime.ticks_us()
timepassed = signalon - signaloff
distance = (timepassed * 0.0343) / 2
if distance < 170:
print("The distance from object is ",distance,"cm")
play(frec)
sleep(1)
play(frec-1000)
sleep(0.1)
else:
print("The distance from object is ",distance,"cm")
play(frec-frec)
while True:
ultra(2000)
utime.sleep(0.3)