# Convert resistance (0–50kΩ) to temperature in °C
def res_to_celsius(resistance):
# Ensure valid input range
if resistance <= 0:
resistance = 1e-6 # Avoid log(0)
elif resistance > POT_RESISTANCE:
resistance = POT_RESISTANCE
# Beta equation: T = 1 / (1/T0 + (1/B) * ln(R/R0)) - 273.15
steinhart = math.log(resistance / THERMISTOR_NOMINAL)
steinhart /= B_COEFFICIENT_OUTPUT
steinhart += 1.0 / (TEMPERATURE_NOMINAL + 273.15)
steinhart = 1.0 / steinhart
celsius = steinhart - 273.15
# Clamp to physical range (-7.22°C to 100°C)
return Tclamp(celsius, Tminn, Tmaxn)