Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

63 lines
1.5KB

  1. #!/usr/bin/env python
  2. #######################################################################
  3. # Aufgabe 1.3 #
  4. #######################################################################
  5. import gpio_class
  6. def write(servo, pulse):
  7. gpio_class.write(servo, pulse)
  8. class Motor(object):
  9. PWM_PIN = 1 # GPIO pin 11
  10. min_pulse = 100 #ms -> -11 m/s
  11. max_pulse = 200 #ms -> 11 m/s
  12. servo = None
  13. __is_active = False
  14. v_max = 11.0
  15. def __init__(self, servo):
  16. self.servo = servo
  17. def set_speed(self, speed):
  18. if abs(speed) > self.v_max:
  19. speed = self.v_max
  20. if speed == 0:
  21. self.__is_active = False
  22. else:
  23. self.__is_active = True
  24. pulse = 150 + ((speed / self.v_max) * ((self.max_pulse - self.min_pulse)/2))
  25. write(self.servo, pulse)
  26. def stop(self):
  27. self.set_speed(0)
  28. # Aufgabe 1d
  29. def is_active(self):
  30. return self.__is_active
  31. class Steering(object):
  32. PWM_PIN = 2 # GPIO pin 12
  33. min_pulse = 100 # -45
  34. max_pulse = 200 # 45
  35. servo = None
  36. angle_max = 45
  37. def __init__(self, servo):
  38. self.servo = servo
  39. def set_angle(self, angle):
  40. if abs(angle) > self.angle_max:
  41. angle = self.angle_max
  42. pulse = 150 + ((angle / self.angle_max) * ((self.max_pulse - self.min_pulse)/2))
  43. write(self.servo, pulse)
  44. def stop(self):
  45. self.set_angel(0)