|
@@ -20,7 +20,11 @@ class MagDistributor:
|
|
|
#self.rot_step_pin = gpio_conf.mag_dist_rot_step_pin
|
|
#self.rot_step_pin = gpio_conf.mag_dist_rot_step_pin
|
|
|
#self.rot_en_pin = gpio_conf.mag_dist_rot_en_pin
|
|
#self.rot_en_pin = gpio_conf.mag_dist_rot_en_pin
|
|
|
self.rot_servo_pin = gpio_conf.mag_dist_rot_servo_pin
|
|
self.rot_servo_pin = gpio_conf.mag_dist_rot_servo_pin
|
|
|
- #print(self.rot_servo_pin)
|
|
|
|
|
|
|
+ self.mag_dist_rot_servo_pin = gpio_conf.mag_dist_rot_servo_pin
|
|
|
|
|
+ self.mag_dist_servo_angle_magazin = gpio_conf.mag_dist_servo_angle_magazin
|
|
|
|
|
+ self.mag_dist_servo_angle_neutral = gpio_conf.mag_dist_servo_angle_neutral
|
|
|
|
|
+ self.mag_dist_servo_angle_feeder = gpio_conf.mag_dist_servo_angle_feeder
|
|
|
|
|
+ self.mag_dist_servo_angle_defeeder = gpio_conf.mag_dist_servo_angle_defeeder
|
|
|
|
|
|
|
|
# Endstop pins
|
|
# Endstop pins
|
|
|
self.linear_limit_pin = gpio_conf.mag_dist_pos_limit_pin
|
|
self.linear_limit_pin = gpio_conf.mag_dist_pos_limit_pin
|
|
@@ -94,6 +98,8 @@ class MagDistributor:
|
|
|
"""
|
|
"""
|
|
|
if self.debug:
|
|
if self.debug:
|
|
|
return
|
|
return
|
|
|
|
|
+ # bring servo in neutral position to avoid crash
|
|
|
|
|
+ self.gpio.set_servo_angle_smooth(self.mag_dist_rot_servo_pin, self.mag_dist_servo_angle_neutral, 1000)
|
|
|
# Move in negative direction until endstop is triggered
|
|
# Move in negative direction until endstop is triggered
|
|
|
for _ in range(max_steps):
|
|
for _ in range(max_steps):
|
|
|
if not self.gpio.get_pin(endstop_pin):
|
|
if not self.gpio.get_pin(endstop_pin):
|
|
@@ -104,7 +110,7 @@ class MagDistributor:
|
|
|
raise RuntimeError(f"{axis} axis homing failed")
|
|
raise RuntimeError(f"{axis} axis homing failed")
|
|
|
self.logger.info(f"{axis} axis homed.")
|
|
self.logger.info(f"{axis} axis homed.")
|
|
|
|
|
|
|
|
- def move_mag_distributor_at_pos(self, pos_target, rot_target, step_delay=200):
|
|
|
|
|
|
|
+ def move_mag_distributor_at_pos(self, pos_target, rot_target, servo_speed, step_delay=200):
|
|
|
"""
|
|
"""
|
|
|
Move the magazine distributor to the specified linear and rotational position.
|
|
Move the magazine distributor to the specified linear and rotational position.
|
|
|
"""
|
|
"""
|
|
@@ -122,6 +128,9 @@ class MagDistributor:
|
|
|
self.gpio.do_step(self.linear_dir_pin, self.linear_step_pin, linear_steps, step_delay, linear_dir)
|
|
self.gpio.do_step(self.linear_dir_pin, self.linear_step_pin, linear_steps, step_delay, linear_dir)
|
|
|
self.curr_pos_mm = pos_target
|
|
self.curr_pos_mm = pos_target
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+ self.gpio.set_servo_angle_smooth(self.mag_dist_rot_servo_pin, rot_target, servo_speed)
|
|
|
|
|
+
|
|
|
# rot_steps = int(abs(rot_target - self.curr_rot_deg) * self.full_rot_steps / 360)
|
|
# rot_steps = int(abs(rot_target - self.curr_rot_deg) * self.full_rot_steps / 360)
|
|
|
# rot_dir = True if rot_target > self.curr_rot_deg else False
|
|
# rot_dir = True if rot_target > self.curr_rot_deg else False
|
|
|
# if rot_steps > 0:
|
|
# if rot_steps > 0:
|