diff --git a/turret.h b/turret.h new file mode 100644 index 0000000..8271913 --- /dev/null +++ b/turret.h @@ -0,0 +1,76 @@ +#ifndef TURRET_H +#define TURRET_H + +#include + +class Turret { + public: + + enum Unit { + MM, + CM, + M, + RAD, + DEG, + STEP + }; + + Turret( + int pin_x_direction, int pin_x_pulse, int pin_x_enable, int pin_x_home, + int pin_y_direction, int pin_y_pulse, int pin_y_enable, int pin_y_home, + int pin_laser + ); + + Turret& init(); + Turret& gotoHome(); + Turret& gotoZero(); + + Turret& moveTo(double x, double y, double z, Unit unit = Turret::Unit::CM); + Turret& moveBy(double x, double y, double z, Unit unit = Turret::Unit::CM); + + Turret& moveToX(double x, Unit unit = Turret::Unit::CM); + Turret& moveToY(double y, Unit unit = Turret::Unit::CM); + Turret& moveToZ(double z, Unit unit = Turret::Unit::CM); + + Turret& moveByX(double x, Unit unit = Turret::Unit::CM); + Turret& moveByY(double y, Unit unit = Turret::Unit::CM); + Turret& moveByZ(double z, Unit unit = Turret::Unit::CM); + + Turret& getPosition(double &x, double &y, double &z, Unit unit); + Turret& getHome(double &x, double &y, double &z, Unit unit); + Turret& getZero(double &x, double &y, double &z, Unit unit); + + Turret& calibrate(); + + Turret& laserOn(); + Turret& laserOff(); + + private: + + kissStepper _stepperX; + kissStepper _stepperY; + + int _homeX; + int _homeY; + + int _zeroX; + int _zeroY; + + int _currentX; + int _currentY; + int _currentZ; + + int _pin_x_direction; + int _pin_x_pulse; + int _pin_x_enable; + + int _pin_y_direction; + int _pin_y_pulse; + int _pin_y_enable; + + int _pin_x_home; + int _pin_y_home; + int _pin_laser; +}; + +#endif