From a28a48e42a949caeffe75ecc9dfbc09d4e643c7e Mon Sep 17 00:00:00 2001 From: lonkaars Date: Tue, 26 Apr 2022 17:12:20 +0200 Subject: controller demo --- robot/test/dummy.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 robot/test/dummy.py (limited to 'robot/test/dummy.py') diff --git a/robot/test/dummy.py b/robot/test/dummy.py new file mode 100644 index 0000000..5265fa0 --- /dev/null +++ b/robot/test/dummy.py @@ -0,0 +1,51 @@ +import pygame +import serial +pygame.init() +joysticks = [] +clock = pygame.time.Clock() +keepPlaying = True + +left_right_stick = 0 +forward_stick = 0 +backward_stick = 0 + +def sign(num): + if num == 0: + return 0 + elif num > 0: + return 1 + else: + return -1 + +serport = serial.Serial("/dev/ttyACM0", 9600, timeout=1) +def send_speed(left, right): + total = "" + total += f"{(sign(left) + 1):02x}" + total += f"{(abs(left)):02x}" + total += f"{(sign(right) + 1):02x}" + total += f"{(abs(right)):02x}" + + serport.write(bytes(total, 'utf-8')) + serport.flush() + print(total) + +for i in range(0, pygame.joystick.get_count()): + joysticks.append(pygame.joystick.Joystick(i)) + joysticks[-1].init() + print ("Detected joystick "),joysticks[-1].get_name(),"'" + +def make_values(): + left = 255 - max(0, left_right_stick) * 255 + right = 255 + min(0, left_right_stick) * 255 + speed_mod = backward_stick + forward_stick + return (int(left * speed_mod) , int(right * speed_mod)) + +while keepPlaying: + clock.tick(60) + values = make_values() + send_speed(values[0], values[1]) + for event in pygame.event.get(): + if event.type != 1536: continue + if event.axis == 0: left_right_stick = event.value + if event.axis == 2: backward_stick = event.value * -0.5 - 1 + if event.axis == 5: forward_stick = event.value * 0.5 + 1 -- cgit v1.2.3