servo.py 1000 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import pigpio
  2. def main():
  3. pi = pigpio.pi()
  4. servo_pin = 14
  5. print("Servo Playground")
  6. print("Type an angle (0-180) to set the servo, or 'q' to quit.")
  7. while True:
  8. cmd = input("Enter angle: ").strip()
  9. if cmd == "q":
  10. print("Exiting.")
  11. break
  12. if not pi.connected:
  13. raise RuntimeError(f"Failed to connect to pigpio daemon for pin {pin}")
  14. try:
  15. angle = float(cmd)
  16. if not (0 <= angle <= 180):
  17. print("Angle must be between 0 and 180.")
  18. continue
  19. # Map angle to pulse width
  20. pulsewidth = int(500 + (angle / 180.0) * 2000)
  21. pi.set_servo_pulsewidth(servo_pin, pulsewidth)
  22. print(f"Set servo to {angle} degrees.")
  23. except Exception as e:
  24. print(f"Invalid input: {e}")
  25. finally:
  26. pi.write(servo_pin, 0)
  27. pi.stop()
  28. if __name__ == "__main__":
  29. main()