15#include "digital_in.hpp"
22#define HOMING_DIR_FWD 1.0
23#define HOMING_DIR_BWD -1.0
26#define HOMING_AXIS_STATE_BEGIN 0
27#define HOMING_AXIS_STATE_BACKING_OFF 1
28#define HOMING_AXIS_STATE_SEEKING 2
29#define HOMING_AXIS_STATE_CENTERING 3
30#define HOMING_STATE_FINISHED 4
31#define HOMING_STATE_WAITING 5
38class HomingAxis :
public Plugin {
42 uint8_t limit_switch_port,
43 DecimalPosition value_at_limit,
45 DecimalPosition velocity
52 void start_homing_routine();
53 void wait_for_homing();
55 void set_axis_value();
64 uint8_t limit_switch_port_number;
65 Button limit_switch_button;
66 DecimalPosition value_at_limit;
68 DecimalPosition homing_velocity;
70 uint8_t current_homing_state;
72 DecimalPosition current_position = 0;
86class Homing :
public Plugin{
106 uint8_t limit_switch_port,
107 DecimalPosition value_at_limit,
109 DecimalPosition velocity,
118 HomingAxis axes[MAX_NUM_AXES];
120 int axis_currently_homing = -1;
121 DecimalPosition speed;
BlockPorts provide a unified interface for mapping inputs and outputs of different StepDance componen...
Definition core.hpp:152
void start_homing_routine()
Launch the homing routine (machine will move until it hits the limit switch for each registered axis)...
void begin()
Initialize the Homing plugin. Must be called during setup().
void add_axis(uint8_t limit_switch_port, DecimalPosition value_at_limit, int direction, DecimalPosition velocity, BlockPort *target)
Register an axis to home. The homing routine will go through the regisered axes and home each one in ...