# ------------------------------
# Importación de librerías
# ------------------------------
from machine import Pin, I2C
import ssd1306
from hcsr04 import HCSR04
import utime
# ------------------------------
# Configuración de pines I2C (OLED)
# ------------------------------
I2C_SCL = 22 # SCL del ESP32
I2C_SDA = 21 # SDA del ESP32
i2c = I2C(0, scl=Pin(I2C_SCL), sda=Pin(I2C_SDA), freq=400000)
oled = ssd1306.SSD1306_I2C(128, 64, i2c, addr=0x3C)
# ------------------------------
# Configuración del sensor HC-SR04 con librería
# ------------------------------
sensor = HCSR04(trigger_pin=5, echo_pin=18)
# ------------------------------
# Función para limpiar pantalla
# ------------------------------
def limpiar_pantalla():
oled.fill(0)
oled.show()
# ------------------------------
# Función para mostrar distancia
# ------------------------------
def mostrar_distancia(distancia):
limpiar_pantalla()
oled.text("Sensor Ultrasonico", 0, 0)
if distancia is None:
oled.text("Error lectura", 0, 20)
else:
oled.text("Distancia:", 0, 20)
oled.text(f"{int(distancia)} cm", 0, 40)
oled.show()
# ------------------------------
# Bucle principal
# ------------------------------
while True:
try:
distancia = sensor.distance_cm() # Medición con la librería
except OSError:
distancia = None # Si hay error de medición
mostrar_distancia(distancia)
utime.sleep(0.5)