from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
import utime
trigger1 = Pin(26, Pin.OUT)
echo1 = Pin(27, Pin.IN)
trigger2 = Pin(21, Pin.OUT)
echo2 = Pin(20, Pin.IN)
trigger3 = Pin(19, Pin.OUT)
echo3 = Pin(18, Pin.IN)
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
oled = SSD1306_I2C(128, 64, i2c, addr=0x3C)
def ultra(trigger, echo):
trigger.low()
utime.sleep_us(2)
trigger.high()
utime.sleep_us(5)
trigger.low()
while echo.value() == 0:
signaloff = utime.ticks_us()
while echo.value() == 1:
signalon = utime.ticks_us()
timepassed = signalon - signaloff
distance = (timepassed * 0.0343) / 2
return distance
def display_status(distance):
if distance > 200:
status = "Free"
else:
status = "In Use"
return status
while True:
distance1 = ultra(trigger1, echo1)
distance2 = ultra(trigger2, echo2)
distance3 = ultra(trigger3, echo3)
status1 = display_status(distance1)
status2 = display_status(distance2)
status3 = display_status(distance3)
oled.fill(0)
oled.text("Slot 1: " + status1, 0, 10)
oled.text("Slot 2: " + status2, 0, 30)
oled.text("Slot 3: " + status3, 0, 50)
oled.show()