hopet
lvl.1
Czechia
Offline
|
I think people have perhaps solved this in the meantime, but just for a reference - a small expample we wrote with my son to emulate differential lock on Robomaster S1. You can make a component out of it and run it in the normal Solo mode afterwards. Contains 2 buttons and one input field for setting speed.
my_button = Button()
my_button_back = Button()
my_input_field = InputField()
speed = 100
#def move_button_callback(widget, *args, **kw):
# global speed
# chassis_ctrl.set_wheel_speed(speed,speed,speed,speed)
# time.sleep(5)
def move_button_down_callback(widget, *args, **kw):
global speed
print("going forward with speed " + str(speed))
chassis_ctrl.set_wheel_speed(speed,speed,speed,speed)
#time.sleep(.1)
def move_button_downback_callback(widget, *args, **kw):
global speed
chassis_ctrl.set_wheel_speed(-speed,-speed,-speed,-speed)
#time.sleep(.1)
def move_button_up_callback(widget, *args, **kw):
chassis_ctrl.set_wheel_speed(0,0,0,0)
def my_input_field_callback(widget, *args, **kw):
global speed
try:
print("speed is now " + str(args[0]))
speed = int(args[0])
except:
pass
def start():
global my_button
global my_button_back
global my_input_field
global speed
my_button.set_text('Diff lock move', [0,0,0], text_anchor.upper_left, 36)
#my_button.set_text_color(240,240,240)
#my_button.set_background_color(20,20,20,2)
my_button.set_position(600,0)
my_button.set_size(400,100)
#my_button.callback_register('on_click', move_button_callback)
my_button.callback_register('on_press_down', move_button_down_callback)
my_button.callback_register('on_press_up', move_button_up_callback)
my_button.set_active(True)
stage.add_widget(my_button)
my_button_back.set_text('Diff lock move back', [0,0,0], text_anchor.upper_left, 36)
my_button_back.set_position(600,-100)
my_button_back.set_size(400,100)
my_button_back.callback_register('on_press_down', move_button_downback_callback)
my_button_back.callback_register('on_press_up', move_button_up_callback)
my_button_back.set_active(True)
stage.add_widget(my_button_back)
my_input_field.set_text(str(speed), [0,0,0], text_anchor.upper_center, 24)
my_input_field.set_position(600,100)
#my_input_field.set_size(300,300)
#my_input_field.set_text_color(0,0,0)
#my_input_field.set_background_color(255,255,255,0)
my_input_field.callback_register('on_value_changed', my_input_field_callback)
my_input_field.set_active(True)
stage.add_widget(my_input_field)
while True:
time.sleep(1) |
|