from machine import ADC, Pin
import time
# === Configuración ADC ===
pot = ADC(0) # GPIO26 = ADC0
factor = 3.33 / 65535 # Conversión a voltaje
# === Configuración de pines para segmentos ===
# a, b, c, d, e, f, g, dp
segmentos = [0, 1, 2, 3, 4, 5, 6, 7]
pines_segmentos = [Pin(pin, Pin.OUT) for pin in segmentos]
# === Configuración de pines para los dígitos ===
# [unidades, décimas, centésimas]
digitos = [8, 9, 10]
pines_digitos = [Pin(pin, Pin.OUT) for pin in digitos]
# === Tabla para los dígitos (ánodo común → 1 enciende, 0 apaga) ===
tabla = {
0 : [1, 1, 1, 1, 1, 1, 0],
1 : [0, 1, 1, 0, 0, 0, 0],
2 : [1, 1, 0, 1, 1, 0, 1],
3 : [1, 1, 1, 1, 0, 0, 1],
4 : [0, 1, 1, 0, 0, 1, 1],
5 : [1, 0, 1, 1, 0, 1, 1],
6 : [1, 0, 1, 1, 1, 1, 1],
7 : [1, 1, 1, 0, 0, 0, 0],
8 : [1, 1, 1, 1, 1, 1, 1],
9 : [1, 1, 1, 1, 0, 1, 1],
}
# === Función para mostrar un dígito ===
def mostrar_digito(numero, dp=False):
for pin, estado in zip(pines_segmentos[:7], tabla[numero]):
pin.value(estado)
# Punto decimal (último pin de la lista de segmentos)
pines_segmentos[7].value(1 if dp else 0)
# === Función para actualizar display ===
def actualizar_display(valor):
# Convertir voltaje a 2 decimales
volt_x100 = int(valor * 100) # ej: 3.33 → 333
unidades = (volt_x100 // 100) % 10
decimas = (volt_x100 // 10) % 10
centesimas = volt_x100 % 10
# Unidades (con punto decimal)
pines_digitos[0].value(1)
pines_digitos[1].value(1)
pines_digitos[2].value(1)
mostrar_digito(unidades, dp=True)
pines_digitos[0].value(0)
time.sleep_ms(5)
# Décimas
pines_digitos[0].value(1)
pines_digitos[1].value(1)
pines_digitos[2].value(1)
mostrar_digito(decimas, dp=False)
pines_digitos[1].value(0)
time.sleep_ms(5)
# Centésimas
pines_digitos[0].value(1)
pines_digitos[1].value(1)
pines_digitos[2].value(1)
mostrar_digito(centesimas, dp=False)
pines_digitos[2].value(0)
time.sleep_ms(5)
# === Bucle principal ===
print("Mostrando voltaje del potenciómetro (0.00 a 3.33 V)\n")
while True:
lectura = pot.read_u16()
voltaje = lectura * factor
if voltaje > 3.33: # Limitar al rango deseado
voltaje = 3.33
actualizar_display(voltaje)