from machine import Pin, PWM, ADC
import utime, math
import onewire, ds18x20
from time import sleep
# Temperature Sensor ADC Setup
BETA = 3950
adc = ADC(Pin(19))
adc.atten(ADC.ATTN_11DB)
def Servo(pwm, angle):
pwm.duty(int(((angle)/180 *2 + 0.5) / 20 * 1023))
def read_ntc_temperature():
analog_value = adc.read()
print(analog_value)
temperature_celsius = 1 / (math.log(1 / (4096 / analog_value - 1)) / BETA + 1.0 / 298.15) - 273.15
return temperature_celsius
while True:
temperature = read_ntc_temperature()
print("Temperature: {:.2f} ℃".format(temperature))
# pwm
servo_pin = Pin(5)
servo_freq = 50
servo_pwm = 1
pwm = PWM(servo_pin, freq=servo_freq, duty=servo_pwm) #Defaults to Low Fan Speed
if temperature > 10 and temperature < 30:
# Medium Fan Speed
servo_pwm = 100
pwm = PWM(servo_pin, freq=servo_freq, duty=servo_pwm)
elif temperature > 30:
# High Fan Speed
servo_pwm = 255
pwm = PWM(servo_pin, freq=servo_freq, duty=servo_pwm)
print(f"DEBUG: Servo PWM: {servo_pwm}")
Servo(pwm, 180)
sleep(1)
Servo(pwm, 0)
sleep(1)