瀏覽代碼

Wii Remote basis Steuerung

master
langspielplatte 5 年之前
父節點
當前提交
5d61a92fce
共有 3 個文件被更改,包括 93 次插入3 次删除
  1. +43
    -1
      Versuch 3/iot_car.py
  2. +2
    -2
      Versuch 3/keyikt_main.py
  3. +48
    -0
      Versuch 3/wiikt_main.py

+ 43
- 1
Versuch 3/iot_car.py 查看文件

@@ -27,6 +27,7 @@ class Iot_car():
speed_cur = 0
speed_last = 0
angle_cur = 0
speed_cruise_control = 0 # m/s but only positive
motor = None
streeting = None
@@ -37,7 +38,8 @@ class Iot_car():
import servo_ctrl
self.motor = Motor(1)
self.streeting = Steering(2)
# for keyboard control
def __testmode_accelerate(self):
calc_acc = calculate_acceleration(self.speed_cur, self.acc)
self.speed_last = self.speed_cur
@@ -67,6 +69,45 @@ class Iot_car():
else:
self.__accelerate(speed)
# for wii remote
def cruise_control_increase(self):
s = min(self.V_MAX, self.speed_cruise_control + 2.75)
if s < 0:
self.speed_cruise_control = 0
else:
self.speed_cruise_control = s
def cruise_control_decrease(self):
s = min(self.V_MAX, self.speed_cruise_control - 2.75)
if s < 0:
self.speed_cruise_control = 0
else:
self.speed_cruise_control = s
def def cruise_control_reset(self):
self.speed_cruise_control = 0
def activate_cruise_control_forward(self):
self.speed_last = self.speed_cur
self.speed_cur = self.speed_cruise_control
self.is_testmode_servo_active = True
if not is_testmode_activated:
self.__accelerate(self.speed_cruise_control)
def activate_cruise_control_backward(self):
self.speed_last = self.speed_cur
self.speed_cur = -1 * self.speed_cruise_control
self.is_testmode_servo_active = True
if not is_testmode_activated:
self.__accelerate(-1 * self.speed_cruise_control)
def deactivate_cruise_control(self):
self.speed_last = self.speed_cur
self.speed_cur = 0
self.is_testmode_servo_active = False
if not is_testmode_activated:
self.__accelerate(0)
def reset_streeting(self):
self.set_angle(0)
@@ -90,6 +131,7 @@ class Iot_car():
self.streeting.set_angle(angle)

def stop(self):
self.speed_last = self.speed_cur
self.speed_cur = 0
self.angle_cur = 0

+ 2
- 2
Versuch 3/keyikt_main.py 查看文件

@@ -183,10 +183,10 @@ if __name__ == "__main__":
if keystates['accelerate']: # and v_step:
# Beschleunigen
v_step = False
car.accelerate(speed=1)
car.accelerate(speed=11)
if keystates['decelerate']: # and v_step:
# abbremsen
car.accelerate(speed=-1)
car.accelerate(speed=-11)
if keystates['accelerate_angle_right']:
car.streeting_right()
if keystates['accelerate_angle_left']:

+ 48
- 0
Versuch 3/wiikt_main.py 查看文件

@@ -5,6 +5,7 @@
#######################################################################

from linuxWiimoteLib import *
frim iot_car import Iot_car

# initialize wiimote
wiimote = Wiimote()
@@ -16,6 +17,22 @@ device = ('', '')

connected = False

car = Iot_car(testmode=True)

# AUFGABE d
def set_led(remote):
global car
# percent
p = car.speed_cruise_control / car.V_MAX
if p > 0 and p <= 0.25:
remote.SetLEDs(True, False, False, False)
elif p > 0.25 and p <= 0.5:
remote.SetLEDs(True, True, False, False)
elif p > 0.5 and p <= 0.75:
remote.SetLEDs(True, True, True, False)
else:
remote.SetLEDs(True, True, True, True)

try:
print "Press any key on wiimote to connect"
while (not connected):
@@ -33,6 +50,37 @@ try:
wiimote.calibrateAccelerometer()
sleep(0.1)

# Set acceleration and deceleration
if wiistate.ButtonState.One:
car.activate_cruise_control_forward()
else:
car.deactivate_cruise_control()
if wiistate.ButtonState.Two:
car.activate_cruise_control_backward()
else:
car.deactivate_cruise_control()
# streeting
if wiistate.ButtonState.Up:
# streeting left
car.car.streeting_left()
if wiistate.ButtonState.Down:
# streeting right
car.streeting_right()
if not wiistate.ButtonState.Down and not wiistate.ButtonState.Up:
car.reset_streeting()
# reset button
if wiistate.ButtonState.Minus:
car.reset()
car.cruise_control_reset()
# set led states
set_led(wiimote)
delta = 1.0 / 50
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)
except KeyboardInterrupt:
print "Exiting through keyboard event (CTRL + C)"
exit(wiimote)

Loading…
取消
儲存