from machine import Pin, PWM
import utime
r_switch = Pin(16, Pin.IN, Pin.PULL_UP)
l_switch = Pin(17, Pin.IN, Pin.PULL_UP)
servo = PWM(Pin(15))
servo.freq(50)
min_duty = int(1 / 20 * 65535)
max_duty = int(2 / 20 * 65535)
mid_duty = (min_duty + max_duty) // 2
current_duty = mid_duty
servo.duty_u16(current_duty)
step = 150
def constrain(val, min_val, max_val):
return min(max_val, max(min_val, val))
while True:
if r_switch.value() == 0:
current_duty += step
current_duty = constrain(current_duty, min_duty, max_duty)
servo.duty_u16(current_duty)
angle = int((current_duty - min_duty) * 180 / (max_duty - min_duty))
print("Rotating Clockwise, duty:", current_duty, "angle:", angle)
utime.sleep(0.05)
elif l_switch.value() == 0:
current_duty -= step
current_duty = constrain(current_duty, min_duty, max_duty)
servo.duty_u16(current_duty)
angle = int((current_duty - min_duty) * 180 / (max_duty - min_duty))
print("Rotating Anti-Clockwise, duty:", current_duty, "angle:", angle)
utime.sleep(0.05)
else:
servo.duty_u16(current_duty)
utime.sleep(0.05)