import machine
import ssd1306
import time
i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
trigger = machine.Pin(5, machine.Pin.OUT)
echo = machine.Pin(18, machine.Pin.IN)
buzzer = machine.PWM(machine.Pin(19))
led = machine.PWM(machine.Pin(23))
def measure_distance():
trigger.value(1)
time.sleep_us(10)
trigger.value(0)
pulse_duration = machine.time_pulse_us(echo, 1, 30000)
distance = pulse_duration * 0.0343 / 2
return distance
while True:
dist = measure_distance()
if dist < 100:
buzzer.duty(int(1023 * (1 - dist / 100)))
led.duty(int(1023 * (1 - dist / 100)))
else:
buzzer.duty(0)
led.duty(0)
oled.fill(0)
oled.text("Distance:", 0, 0)
oled.text("{:.2f} cm".format(dist), 0, 20)
oled.show()
time.sleep(1)