from machine import Pin, ADC, PWM, I2C # Importa clases para manejar pines, ADC, PWM, e I2C
from utime import sleep, sleep_ms # Importa funciones sleep para la temporización
from dht import DHT22 # Importa la clase del sensor DHT22
from ssd1306 import SSD1306_I2C # Importa la clase de pantalla OLED SSD1306
# Define las dimensiones de la pantalla OLED
alto = 64 # Altura de la pantalla OLED
ancho = 128 # Anchura de la pantalla OLED
# Inicia la comunicación I2C con la pantalla OLED
i2c=I2C(0, scl=Pin(22), sda=Pin(21)) # Crea un objeto I2C con los pines SCL y SDA especificados
oled = SSD1306_I2C(ancho, alto, i2c) # Crea un objeto de pantalla OLED SSD1306
dht= DHT22(Pin(15)) # Crea un objeto DHT22 usando el pin 15
# Imprime la dirección I2C del dispositivo conectado
print(i2c.scan(), "conectada")# Buscar dispositivos I2C e imprimir sus direcciones
while True: # Inicia un bucle infinito para leer continuamente los datos del sensor
dht.measure() # Mide la temperatura y la humedad desde el sensor DHT22
tem = dht. temperature() # Obtiene el valor de la temperatura
hum = dht.humidity() # Obtiene el valor de la humedad
oled.fill(0) # Borra la pantalla OLED
oled.pixel(64,60, 1) # Dibuja un único píxel en (64, 60)
oled.vline(0, 0, 20, 1) # Dibuja una línea vertical en x=0 desde y=0 hasta y=20
oled.vline(120, 0, 20, 1) # Dibuja una línea vertical en x=120 desde y=0 hasta y=20
oled.hline(0, 0, 120, 1) # Dibuja una línea horizontal de x=0 a x=120 en y=0
oled.hline(0, 20, 120, 1) # Dibuja una línea horizontal de x=0 a x=120 en y=20
oled.text("Datos", 10, 10, 1) # Muestra el texto "Datos" en (10, 10)
oled.text ("Tem:", 0, 30, 1) # Muestra el texto "Tem:" en (0, 30)
oled.text ("Hum:", 0, 40, 1) # Muestra el texto "Hum:" en (0, 40)
oled.text(str(tem), 60, 30, 1) # Muestra el valor de temperatura en (60, 30)
oled.text(str(hum), 60, 40, 1) # Muestra el valor de humedad en (60, 40)
oled. show() # Actualiza la pantalla para mostrar el contenido actualizado