from machine import ADC, Pin, I2C
import time
import framebuf
import ssd1306
# --- Configuración de la pantalla OLED ---
# Configuración de I2C
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
# Configuración de la pantalla OLED (128x64)
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
# --- Entrada del potenciómetro ---
pot_umbral = ADC(Pin(35))
pot_umbral.atten(ADC.ATTN_11DB)
# --- Variables para el gráfico ---
buffer = [0] * oled_width # Almacena los valores del potenciómetro para graficar
# --- Función para actualizar el gráfico ---
def actualizar_grafico(valor):
# Escalar el valor del potenciómetro (0-4095) al rango de la pantalla OLED (0-63)
y_val = int((valor / 4095) * (oled_height - 1))
# Desplazar el buffer hacia la izquierda
for i in range(oled_width - 1):
buffer[i] = buffer[i + 1]
buffer[-1] = y_val # Agregar el nuevo valor al final del buffer
# Limpiar la pantalla
oled.fill(0)
# Dibujar el gráfico
for x in range(1, oled_width):
oled.line(x - 1, oled_height - 1 - buffer[x - 1], x, oled_height - 1 - buffer[x], 1)
# Mostrar el gráfico en la pantalla
oled.show()
# --- Bucle principal ---
while True:
# Leer el valor del potenciómetro
valor_pot = pot_umbral.read()
# Actualizar el gráfico con el valor leído
actualizar_grafico(valor_pot)
# Pequeña pausa para controlar la velocidad de actualización
time.sleep(0.005)