您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

105 行
3.0KB

  1. #!/usr/bin/env python
  2. #######################################################################
  3. # Aufgabe 2 #
  4. #######################################################################
  5. from linuxWiimoteLib import *
  6. from iot_car import Iot_car
  7. # initialize wiimote
  8. wiimote = Wiimote()
  9. #Insert address and name of device here
  10. # hcitool scan
  11. #
  12. # B8:AE:6E:30:0F:0F Nintendo RVL-CNT-01-TR
  13. #
  14. device = ('B8:AE:6E:30:0F:0F', 'Nintendo RVL-CNT-01-TR')
  15. connected = False
  16. car = Iot_car(testmode=False)
  17. # AUFGABE d
  18. def set_led(remote):
  19. global car
  20. # percent
  21. p = car.speed_cruise_control / car.V_MAX
  22. if p > 0 and p <= 0.25:
  23. remote.SetLEDs(True, False, False, False)
  24. elif p > 0.25 and p <= 0.5:
  25. remote.SetLEDs(True, True, False, False)
  26. elif p > 0.5 and p <= 0.75:
  27. remote.SetLEDs(True, True, True, False)
  28. elif p == 1:
  29. remote.SetLEDs(True, True, True, True)
  30. else:
  31. remote.SetLEDs(False, False, False, False)
  32. try:
  33. print "Press any key on wiimote to connect"
  34. while (not connected):
  35. connected = wiimote.Connect(device)
  36. print "succesfully connected"
  37. wiimote.SetAccelerometerMode()
  38. wiistate = wiimote.WiimoteState
  39. step = True
  40. counter = 0
  41. print 'entering loop'
  42. while True:
  43. # re-calibrate accelerometer
  44. if (wiistate.ButtonState.Home):
  45. print 're-calibrating'
  46. wiimote.calibrateAccelerometer()
  47. sleep(0.1)
  48. # Set acceleration and deceleration
  49. if wiistate.ButtonState.One:
  50. car.activate_cruise_control_forward()
  51. elif wiistate.ButtonState.Two:
  52. car.activate_cruise_control_backward()
  53. else:
  54. car.deactivate_cruise_control()
  55. # streeting
  56. if wiistate.ButtonState.Up:
  57. # streeting left
  58. car.streeting_left()
  59. if wiistate.ButtonState.Down:
  60. # streeting right
  61. car.streeting_right()
  62. if not wiistate.ButtonState.Down and not wiistate.ButtonState.Up:
  63. car.reset_streeting()
  64. if wiistate.ButtonState.Right and step:
  65. car.cruise_control_increase()
  66. step = False
  67. if wiistate.ButtonState.Left and step:
  68. car.cruise_control_decrease()
  69. step = False
  70. # reset button
  71. if wiistate.ButtonState.Minus:
  72. car.stop()
  73. car.cruise_control_reset()
  74. # set led states
  75. set_led(wiimote)
  76. counter = counter + 1
  77. if counter == 50:
  78. step = True
  79. counter = 0
  80. delta = 1.0 / 50
  81. print wiimote.getAccelState()
  82. #print '({},{} --> {})'.format(car.speed_cur, car.angle_cur, (car.speed_cur - car.speed_last) / delta) + ", Servo_active: " + str(car.is_testmode_servo_active) + " CC Speed: " + str(car.speed_cruise_control)
  83. sleep(0.01)
  84. except KeyboardInterrupt:
  85. print "Exiting through keyboard event (CTRL + C)"
  86. exit(wiimote)