from machine import Pin, I2C
import utime
import ssd1306
trig= Pin(0, Pin.OUT, value=0 )
echo= Pin(1, Pin.IN)
RelayIn = Pin(2, Pin.OUT, value=0)
RelayOut= Pin(3,Pin.OUT, value=0)
btn= Pin(4, Pin.IN, Pin.PULL_UP)
i2c = I2C(0, scl=Pin(5), sda=Pin(6))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
D =320
h= 0
def ultrason():
trig.off()
trig.on()
utime.sleep_us(10)
trig.off()
while echo.value() == 0:
Toff = utime.ticks_us()
while echo.value() == 1:
Ton = utime.ticks_us()
t= (Ton - Toff) / 2
distance = int (t * 0.0343)
h=320 - distance
hPercent = int(h*(100/300))
if 210<=h<=270:
RelayIn.on()
RelayOut.on()
elif h>270:
RelayIn.off()
RelayOut.on()
else:
RelayIn.on()
RelayOut.off()
def display_water_level():
oled.fill(0)
oled.text(f"Water Level: {hPercent}%", 0,0)
oled.show()
while True :
if btn.value()==0 : #Button is pressed(assuming active low)
ultrason()
display_water_level()
utime.sleep_ms(50)
else:
oled.fill(0)
oled.text("Press button to measure", 0,0)
oled.show()