from machine import Pin
from time import sleep
import machine
import utime
import math
ledmanu = Pin(26, Pin.OUT)
ledauto = Pin(22, Pin.OUT)
ledoncircu = Pin(21, Pin.OUT)
boton = Pin(7, Pin.IN, Pin.PULL_UP)
# Sensor Connections
adc_piscine = machine.ADC(28)
adc_solaire = machine.ADC(27)
delta_fonctionnement_solaire = 20
#estado_ledmanu = True # Estado inicial del LED apagado
#estado_ledauto = True # Estado inicial del LED apagado
modefonctionnement = "none"
def read_temperature_temp_piscine():
beta = 3950
series_resistor = 10000
adc_piscine_value = adc_piscine.read_u16()
resistance_temp_piscine = series_resistor / (65535 / adc_piscine_value - 1)
# Using the Steinhart-Hart equation to calculate the temperature
steinhart_piscine = resistance_temp_piscine / 10000 # (R/Ro)
steinhart_piscine = math.log(steinhart_piscine) # ln(R/Ro)
steinhart_piscine /= beta # 1/B * ln(R/Ro)
steinhart_piscine += 1.0 / (25 + 273.15) # + (1/To)
steinhart_piscine = 1.0 / steinhart_piscine # Invert
steinhart_piscine -= 273.15 # Convert to Celsius
return steinhart_piscine
def read_temperature_temp_solaire():
beta = 3950
series_resistor = 10000
adc_solaire_value = adc_solaire.read_u16()
resistance_temp_solaire = series_resistor / (65535 / adc_solaire_value - 1)
# Using the Steinhart-Hart equation to calculate the temperature
steinhart_solaire = resistance_temp_solaire / 10000 # (R/Ro)
steinhart_solaire = math.log(steinhart_solaire) # ln(R/Ro)
steinhart_solaire /= beta # 1/B * ln(R/Ro)
steinhart_solaire += 1.0 / (25 + 273.15) # + (1/To)
steinhart_solaire = 1.0 / steinhart_solaire # Invert
steinhart_solaire -= 273.15 # Convert to Celsius
return steinhart_solaire
while True:
temperature_temp_piscine = read_temperature_temp_piscine()
temperature_temp_solaire= read_temperature_temp_solaire()
modeauto = boton.value() # Lee el estado del botón
if modeauto == 0: # Si se detecta que se pulsó el botón
if modefonctionnement == "auto" :
sleep(0.05) # Pequeña pausa para evitar el rebote del botón
modefonctionnement = "manu"
ledmanu.value(1) # Enciende o apaga el LED según el estado
ledauto.value(0)
print(modefonctionnement) # A efectos didácticos !
sleep(0.5) # Espera antes de la próxima iteración del bucle
else :
sleep(0.05) # Pequeña pausa para evitar el rebote del botón
modefonctionnement = "auto"
ledmanu.value(0) # Enciende o apaga el LED según el estado
ledauto.value(1)
print(modefonctionnement) # A efectos didácticos !
sleep(0.5) # Espera antes de la próxima iteración del bucle
if modefonctionnement == "auto" :
#lire sonde solaire
#lire sonde piscine
#lire le delta pour activation
#si le solaire est plus haut que le delta, activer la circulateur
temperature_cible = temperature_temp_piscine+delta_fonctionnement_solaire
if temperature_temp_solaire > temperature_cible :
ledoncircu.value(1)
print("temperature piscine",temperature_temp_piscine," temperature solaire", temperature_temp_solaire, "temperature cible :", temperature_cible)
else :
ledoncircu.value(0)
sleep(1)