74 lines
1.7 KiB
C++
74 lines
1.7 KiB
C++
#ifndef TURRET_H
|
|
#define TURRET_H
|
|
|
|
#include <kissStepper.h>
|
|
|
|
class Turret {
|
|
public:
|
|
enum Unit { MM, CM, M, RAD, DEG, STEP };
|
|
|
|
Turret(double stepRatioX, double stepRatioY, double offsetX, double offsetY,
|
|
double offsetZ, 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;
|
|
|
|
long _homeX;
|
|
long _homeY;
|
|
|
|
long _zeroX;
|
|
long _zeroY;
|
|
|
|
long _currentX;
|
|
long _currentY;
|
|
long _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;
|
|
|
|
double _step_ratio_x;
|
|
double _step_ratio_y;
|
|
|
|
double _offset_x; // turret to screen
|
|
double _offset_y; // laser to stand
|
|
double _offset_z; // unused
|
|
};
|
|
|
|
#endif
|