@@ -29,6 +29,9 @@ def __init__(self):
2929 self ._packeter = ucPack (200 )
3030 self .left_wheel = _ArduinoAlvikWheel (self ._packeter , ord ('L' ))
3131 self .right_wheel = _ArduinoAlvikWheel (self ._packeter , ord ('R' ))
32+ self ._servo_positions = list ((None , None ,))
33+ self .servo_A = _ArduinoAlvikServo (self ._packeter , 'A' , 0 , self ._servo_positions )
34+ self .servo_B = _ArduinoAlvikServo (self ._packeter , 'B' , 1 , self ._servo_positions )
3235 self ._led_state = list ((None ,))
3336 self .left_led = self .DL1 = _ArduinoAlvikRgbLed (self ._packeter , 'left' , self ._led_state ,
3437 rgb_mask = [0b00000100 , 0b00001000 , 0b00010000 ])
@@ -195,6 +198,7 @@ def begin(self) -> int:
195198 self .set_illuminator (True )
196199 self .set_behaviour (1 )
197200 self ._set_color_reference ()
201+ self .set_servo_positions (0 , 0 )
198202 return 0
199203
200204 def _has_events_registered (self ) -> bool :
@@ -508,6 +512,8 @@ def set_servo_positions(self, a_position: int, b_position: int):
508512 :param b_position: position of B servomotor (0-180)
509513 :return:
510514 """
515+ self ._servo_positions [0 ] = a_position
516+ self ._servo_positions [1 ] = b_position
511517 self ._packeter .packetC2B (ord ('S' ), a_position & 0xFF , b_position & 0xFF )
512518 uart .write (self ._packeter .msg [0 :self ._packeter .msg_size ])
513519
@@ -1223,6 +1229,25 @@ def _stop_events_thread(cls):
12231229 cls ._events_thread_running = False
12241230
12251231
1232+ class _ArduinoAlvikServo :
1233+
1234+ def __init__ (self , packeter : ucPack , label : str , servo_id : int , position : list [int | None ]):
1235+ self ._packeter = packeter
1236+ self ._label = label
1237+ self ._id = servo_id
1238+ self ._position = position
1239+
1240+ def set_position (self , position ):
1241+ """
1242+ Sets the position of the servo
1243+ :param position:
1244+ :return:
1245+ """
1246+ self ._position [self ._id ] = position
1247+ self ._packeter .packetC2B (ord ('S' ), self ._position [0 ] & 0xFF , self ._position [1 ] & 0xFF )
1248+ uart .write (self ._packeter .msg [0 :self ._packeter .msg_size ])
1249+
1250+
12261251class _ArduinoAlvikWheel :
12271252
12281253 def __init__ (self , packeter : ucPack , label : int , wheel_diameter_mm : float = WHEEL_DIAMETER_MM ):
0 commit comments