from machine import ADC, Pin, UART
import time
# Configuración del pin analógico
analog_in_pin = ADC(Pin(26)) # GPIO 26 (ADC0) en Raspberry Pi Pico
# Configuración del puerto serial (UART0 por defecto en TX=0, RX=1)
uart = UART(0, baudrate=9600, tx=Pin(0), rx=Pin(1))
# Variables
buf = [0] * 10
def read_sensor():
while True:
# Leer múltiples valores y almacenarlos en el buffer
for i in range(10):
buf[i] = analog_in_pin.read_u16() # Lee valores de 16 bits
time.sleep_ms(10)
# Ordenar los valores y eliminar los extremos
buf.sort()
# Calcular el promedio descartando los valores más altos y bajos
in_value = sum(buf[2:8]) # Promedio de los valores intermedios
# Convertir a voltaje en mV
# 3.3V es la referencia de voltaje del ADC, 65535 es el rango del ADC de 16 bits
ph_vol = (in_value * 3.3 / 65535) * 100 / 6
# Enviar el resultado a través del puerto serial
uart.write("Voltaje mV = {:.2f}\n".format(ph_vol))
# Calcular el pH usando la ecuación proporcionada
ph = -0.0554 * ph_vol + 22.236
uart.write("PH = {:.2f}\n".format(ph))
time.sleep(2) # Esperar 2 segundos antes de la siguiente lectura
# Ejecutar la función de lectura de sensores
read_sensor()