From dfdf527e0158e97aec5e87b0995d4a7764ec22ec Mon Sep 17 00:00:00 2001 From: Michel Date: Sun, 26 Jun 2022 11:39:38 +0200 Subject: [PATCH] v0.0.0 --- .../main.py | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 DAKAR TRIAL Truck 42114 B alternate model Zetros killer by RM8 LEGO Garage - BrickGarage (MOC-113177)/main.py diff --git a/DAKAR TRIAL Truck 42114 B alternate model Zetros killer by RM8 LEGO Garage - BrickGarage (MOC-113177)/main.py b/DAKAR TRIAL Truck 42114 B alternate model Zetros killer by RM8 LEGO Garage - BrickGarage (MOC-113177)/main.py new file mode 100644 index 0000000..ad6911c --- /dev/null +++ b/DAKAR TRIAL Truck 42114 B alternate model Zetros killer by RM8 LEGO Garage - BrickGarage (MOC-113177)/main.py @@ -0,0 +1,85 @@ +################################################################################ +# # +# pybricks script for DAKAR / TRIAL Truck 42114 B alternate model / Zetros # +# killer by RM8 LEGO Garage - BrickGarage # +# # +# This script enables the LEGO® Powered Up Technic Hub to be used with the # +# LEGO® Powerd UP 88010 Remote. # +# # +# Configuration of the Technic Hub: # +# Port A: Drive motor # +# Port B: Steering with left and right limited # +# Port C: Drive motor # +# Port D: Not used # +# # +################################################################################ +# Rebrickable: https://rebrickable.com/mocs/MOC-113177/ # +# Script base: https://racingbrick.com/2021/08/remote-control-for-control-sets # +# -without-an-app-or-smartphone-pybricks/ # +################################################################################ +# # +# Changelog # +# # +################################################################################ +# v0.0.0 26-06-2022 # +# First version. # +# Based on v0.0.0 22-06-2022 of 42129 B model 'Hot Trot' by Didumos # +################################################################################ + +from pybricks.pupdevices import Motor, Remote +from pybricks.parameters import Port, Direction, Stop, Button +from pybricks.tools import wait + +# Initialize the motors. +steering = Motor(Port.B, Direction.CLOCKWISE) +driving_1 = Motor(Port.A, Direction.COUNTERCLOCKWISE) +driving_2 = Motor(Port.C, Direction.CLOCKWISE) + +# Connect to the remote. +remote = Remote() + +# Read the current settings +old_kp, old_ki, old_kd, _, _ = steering.control.pid() + +# Set new values +steering.control.pid(kp=old_kp*4, kd=old_kd*0.4) + +# Find the steering endpoint on the left and right. +# The middle is in between. +left_end = steering.run_until_stalled(-200, then=Stop.HOLD) +right_end = steering.run_until_stalled(200, then=Stop.HOLD) + +# We are now at the right. Reset this angle to be half the difference. +# That puts zero in the middle. +steering.reset_angle((right_end - left_end)/2) +steering.run_target(speed=200, target_angle=0, wait=False) + +# Set steering angle +steer_angle = (((right_end - left_end)/2)-5) +print('steer angle:',steer_angle) + +while True: + # Check which buttons are pressed. + pressed = remote.buttons.pressed() + + # Choose the steering angle based on the right controls. + if Button.RIGHT_MINUS in pressed: + steering.run_target(1400, -steer_angle, Stop.HOLD, False) + elif Button.RIGHT_PLUS in pressed: + steering.run_target(1400, steer_angle, Stop.HOLD, False) + else: + steering.track_target(0) + + # Choose the drive speed based on the left controls. + if Button.LEFT_MINUS in pressed: + driving_1.dc(100) + driving_2.dc(100) + elif Button.LEFT_PLUS in pressed: + driving_1.dc(-100) + driving_2.dc(-100) + else: + driving_1.dc(0) + driving_2.dc(0) + + # Wait. + wait(10) \ No newline at end of file