import time
import board
import pwmio
from adafruit_motor import servo
import microcontroller

# Create a PWMOut object on Pin GP12
pwm = pwmio.PWMOut(board.GP12, duty_cycle=2 ** 15, frequency=50)

# Create a servo object, my_servo
my_servo = servo.Servo(pwm)

# Function to map temperature range to servo angle range
def map_temperature_to_angle(temperature, min_temp, max_temp, min_angle, max_angle):
    temperature = max(min(temperature, max_temp), min_temp)  # Limit temperature within the given range
    temperature_range = max_temp - min_temp
    angle_range = max_angle - min_angle
    angle = ((temperature - min_temp) / temperature_range) * angle_range + min_angle
    return int(angle)

while True:
    # Read the onboard temperature in Celsius
    temperature = microcontroller.cpu.temperature

    # Map temperature to servo angle
    angle = map_temperature_to_angle(temperature, 18, 35, 180, 0)

    # Set the servo angle
    my_servo.angle = angle

    # Print temperature and servo angle
    print("Temperature: {:.2f}°C, Servo Angle: {}".format(temperature, angle))

    time.sleep(1)  # Pause for 1 second