import machine
from utime import sleep, ticks_ms
import temperatuur
import thermostaat
import knoppen
import scherm
import symbolen
import time
temperatuur_nu = 0
thermostaat_nu = 0
temperatuur_prev = 0
thermostaat_prev = 0
temperatuur_str = "0.0"
thermostaat_str = "0.0"
knop_str = ""
heating_str = "0%"
extra_str= ""
knop_prev = 1
is_knop_prev = True
is_heating = False
hysteresis = 1
is_veranderd = False
temp_timestamp = 0
therm_timestamp = 0
temperatuur_gemeten=0
oled=scherm.oled_startup()
time.sleep(5)
while True:
is_veranderd = False
# Drukknop uitlezen
is_knop = knoppen.read_btn()
if is_knop != is_knop_prev :
is_knop_prev = is_knop
is_veranderd = True
# Temperatuur converteren; enkel als er geen meting aan het lopen is
if (temperatuur_gemeten == 0) :
temperatuur.get_temperatuur()
temperatuur_gemeten = 1
# Temperatuur uitlezen (1sec na converteren)
tempsensor_wachttijd = ticks_ms()
if (tempsensor_wachttijd - temp_timestamp > 1000) and (temperatuur_gemeten == 1) :
temp_timestamp = tempsensor_wachttijd
temperatuur_gemeten=0
temperatuur_nu = temperatuur.read_temperatuur()
if (abs(temperatuur_nu - temperatuur_prev) > 0.1 ) : # als de temp met 0.1 veranderd is
temperatuur_prev = temperatuur_nu
temperatuur_str = "{:.1f}".format(temperatuur_nu)
is_veranderd = True
# Themostaat om de 200ms uitlezen; enkel als de knop aan staat
potmeter_wachttijd = ticks_ms()
if (potmeter_wachttijd - therm_timestamp > 200) and (is_knop == True) :
therm_timestamp = potmeter_wachttijd
thermostaat_nu= thermostaat.get_thermostaat()
if (thermostaat_nu != thermostaat_prev):
thermostaat_prev = thermostaat_nu
thermostaat_str = "{:.1f}".format(thermostaat_nu)
is_veranderd = True
# Oled enkel aansturen indien iets gewijzigd is
if (is_veranderd):
if is_knop == False :
knop_str = "OFF"
thermostaat_str = "N/A"
is_heating = False
heating_str = "0%"
extra_str= ""
else:
knop_str = "ON"
thermostaat_str = "{:.1f}".format(thermostaat_nu)
if thermostaat_nu - hysteresis >= temperatuur_nu :
is_heating = True
heating_str ="100%"
extra_str="Stoken!"
elif thermostaat_nu + hysteresis <= temperatuur_nu :
is_heating = False
heating_str = "0%"
extra_str="Warm genoeg!"
oled= scherm.oled_update(temperatuur_str,thermostaat_str,knop_str,heating_str,extra_str)
print("T:" , temperatuur_nu, " / D:", thermostaat_nu, " / S:", knop_str, " / H:", heating_str)
Loading
grove-oled-sh1107
grove-oled-sh1107