from machine import ADC, Pin
import time
import math
# Configuración de pines
ntc = ADC(Pin(28)) # asignacion del pin de lectura de temperatura  
ldr = ADC(Pin(27)) # asignacion del pin de lectura de sensor de luminosidad
led = Pin(15, Pin.OUT) # asignacion de pin de salida de led
# Definir los umbrales de temperatura y luz
TEMP_UMBRAL = 30 # Temperatura en grados Celsius para el umbral alto
LUZ_UMBRAL = 30000  # Umbral alto de luz en lux


# Parámetros de calibración sensor de luminosidad
RL10 = 50.0  # Resistencia a 1 lux 
GAMMA = 0.7  # Valor del exponente GAMMA (ajustable según el tipo de LDR)
VREF = 3.3  # Voltaje de referencia (en este caso 3.3V)

# Bucle principal de monitoreo
while True:
        # Leer valor del ADC del NTC (temperatura)
        valor_adc_ntc = ntc.read_u16()
        # Convertir valor ADC a voltaje
        voltaje_ntc = valor_adc_ntc * 3.3 / 65535
        # Calcular resistencia del NTC
        resistencia_ntc = 10000 * (3.3 / voltaje_ntc - 1)
        # Calcular temperatura en Celsius usando la ecuación aproximada
        temperatura_c = 1 / (1 / (25 + 273.15) - (1 / 3950) * math.log(resistencia_ntc / 10000)) - 273.15
        
        
        # Leer valor del ADC del LDR (luminosidad)
        valor_adc_ldr = ldr.read_u16()
        #convertimos el valor ADC a voltaje
        voltage_ldr = valor_adc_ldr * VREF / 65535
        #calculamos la resistencia del LRD
        resistencia_ldr = (voltage_ldr * 10000) / (VREF - voltage_ldr)
        #calculamos los lux de acuerdo a ecuacion aproximidad
        lux = math.pow(RL10 * 1e3 * math.pow(10, GAMMA) / resistencia_ldr, (1 / GAMMA))
        


        # Mostrar lecturas
        print("Temperatura: {:.2f} °C, Luz: {}".format(temperatura_c, lux))
        # Evaluar condiciones y activar alerta
        if temperatura_c > TEMP_UMBRAL or lux > LUZ_UMBRAL:
                led.value(1) # encendido de led al momento de pasar el umbral de temperatura o luminosidad

        else:
                led.value(0) # apagado de led al momento de bajar el umbral de temperatura o luminosidad
        # Esperar antes de la siguiente lectura
        time.sleep(1)
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT