diff --git a/src/servo.py b/src/servo.py new file mode 100644 index 0000000..a541c5f --- /dev/null +++ b/src/servo.py @@ -0,0 +1,32 @@ +import machine +import time +import sys + +servo_pin = machine.Pin(15) +pwm = machine.PWM(servo_pin) +pwm.freq(50) + +def set_angle(angle): + pulse_us = 1000 + (angle / 180) * 1000 + duty = int((pulse_us / 20000) * 65535) + pwm.duty_u16(duty) + +def move_servo_smoothly(start_angle, end_angle, step=1, delay=0.02): + if start_angle < end_angle: + for angle in range(start_angle, end_angle + 1, step): + set_angle(angle) + time.sleep(delay) + else: + for angle in range(start_angle, end_angle - 1, -step): + set_angle(angle) + time.sleep(delay) + +def open_door(): + move_servo_smoothly(0, 180, step=2, delay=0.03) + time.sleep(5) + move_servo_smoothly(180, 0, step=2, delay=0.03) + +while True: + command = sys.stdin.readline().strip() + if command == "run": + open_door() \ No newline at end of file