import machine 
from machine import SoftI2C, Pin 
from lcd_api import LcdApi 
from i2c_lcd import I2cLcd
from ssd1306 import SSD1306_I2C
from hcsr04 import HCSR04
from time import sleep


sensor = HCSR04(trigger_pin=5, echo_pin=18, echo_timeout_us=10000)

I2C_ADDR_LCD = 0x27
I2C_ADDR_OLED = 0x3c
oled_width = 128
oled_height = 64 
lcd_Rows = 2 
lcd_Columns = 16

i2c = SoftI2C(scl=Pin(22), sda=Pin(21), freq=10000) 	#initializing the I2C method for ESP32 

lcd = I2cLcd(i2c, I2C_ADDR_LCD, lcd_Rows, lcd_Columns)
oled = SSD1306_I2C(oled_width, oled_height, i2c, I2C_ADDR_OLED)

lcd.move_to(1,0)
lcd.putstr("ESP32 with LCD")

oled.text('ESP32 with OLED', 3, 6, 1)
oled.show()

while True:
    distance = sensor.distance_cm()
    print('Distance:', distance, 'cm')
    lcd.move_to(0,1)
    lcd.putstr('Distance: '+str(distance))
    oled.text('distance:'+str(distance), 0, 26, 1)
    oled.show()
    oled.fill(0)    #to clear the screen

    sleep(1)