from machine import Pin, ADC # Importar las clases Pin y ADC del módulo machine
from time import sleep_ms # Importar la función sleep_ms del módulo time
from lcd import LCD # Importar la clase LCD desde el módulo lcd
# Pines en los que se conecta el LCD al microcontrolador
# Se conectan a los pines del LCD:
# RS(Select Register): Se usa para mover el cursor o datos que se deben mostrar en la pantalla.
# E(Enable): Habilita la lectura o escritura de datos en el LCD
# D4, D5, D6, D7 (Pines de Datos): Se utilizan para enviar datos al LCD o recibir datos desde él
lcd = LCD(0, 1, 2, 3, 4, 5)
# Configurar el pin de entrada analógica ADC en el pin 26
adc = ADC(Pin(26))
while True:
# Leer el valor analógico del pin ADC
valor_analogico = adc.read_u16()
# Convertir el valor analógico a un rango de 0 a 5V
# El rango de valor de read_u16() es de 0 a 65535 y el valor máximo que lee el ADC es de 3.3V por lo tanto para una entrada de 3.3V vamos a tener una lectura de 65535, para convertir este valor al valor real entre 0 y 3.3V tendremos que dividir el valor leído entre 65535 y multiplicarlo por 3.3.
# Por último se multiplica por 2, debido al divisor de voltaje realizado anteriormente.
valor_porcentaje = (valor_analogico / 65535) * 3.3 * 2
# Mover el cursor a la primera línea y mostrar el mensaje "Voltaje Vo:"
lcd.move_to(0, 0)
lcd.putstr("Voltaje Vo:")
# Mover el cursor a la segunda línea y mostrar el valor de voltaje en formato de dos decimales
lcd.move_to(0, 1)
lcd.putstr("{:.2f}V".format(valor_porcentaje))
# Esperar 1000 milisegundos (1 segundo) para realizar otra lectura
sleep_ms(1000)