Advertisement
Guest User

Untitled

a guest
Dec 10th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. from microbit import *
  2.  
  3.  
  4. class Servo:
  5. def __init__(self, pin, freq=50, min_us=600, max_us=2400, angle=180):
  6. self.min_us = min_us
  7. self.max_us = max_us
  8. self.us = 0
  9. self.freq = freq
  10. self.angle = angle
  11. self.analog_period = 0
  12. self.pin = pin
  13. analog_period = round((1/self.freq) * 1000) # hertz to miliseconds
  14. self.pin.set_analog_period(analog_period)
  15.  
  16. def write_us(self, us):
  17. us = min(self.max_us, max(self.min_us, us))
  18. duty = round(us * 1024 * self.freq // 1000000)
  19. self.pin.write_analog(duty)
  20. sleep(100)
  21. self.pin.write_digital(0) # turn the pin off
  22.  
  23. def write_angle(self, degrees=None):
  24. if degrees is None:
  25. degrees = math.degrees(radians)
  26. degrees = degrees % 360
  27. total_range = self.max_us - self.min_us
  28. us = self.min_us + total_range * degrees // self.angle
  29. self.write_us(us)
  30.  
  31.  
  32. Servo(pin0).write_angle(0)
  33. while True:
  34. if button_a.is_pressed():
  35. for angle in range(0, 90, 5):
  36. Servo(pin0).write_angle(angle)
  37. sleep(200)
  38. if button_b.is_pressed():
  39. Servo(pin0).write_angle(0)
  40. sleep(1000)
  41. Servo(pin0).write_angle(90)
  42. sleep(1000)
  43. Servo(pin0).write_angle(0)
  44. sleep(1000)
  45. else:
  46. Servo(pin0).write_angle(180)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement