style: apply fmt with clang-format
This commit is contained in:
parent
3ef45566d5
commit
5575f0cb3c
32
maths.cpp
32
maths.cpp
|
|
@ -1,20 +1,16 @@
|
||||||
#include "math.h"
|
#include "math.h"
|
||||||
|
|
||||||
//rollH atan((22.5 - 18.5) / 236) ~0.97°
|
// rollH atan((22.5 - 18.5) / 236) ~0.97°
|
||||||
//rollV ~1°
|
// rollV ~1°
|
||||||
|
|
||||||
double degToRad(double deg) {
|
double degToRad(double deg) { return deg * M_PI / 180.0; }
|
||||||
return deg * M_PI / 180.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
double radToDeg(double rad) {
|
double radToDeg(double rad) { return rad * 180.0 / M_PI; }
|
||||||
return rad * 180.0 / M_PI;
|
|
||||||
}
|
|
||||||
|
|
||||||
void angleToStep(long &stepX, long &stepY, double angleX, double angleY) {
|
void angleToStep(long &stepX, long &stepY, double angleX, double angleY) {
|
||||||
//TODO remove magic numbers
|
// TODO remove magic numbers
|
||||||
double stepRatioX = M_PI / ((51.2 / 15.0) * (100.0 * 64.0));
|
double stepRatioX = M_PI / ((51.2 / 15.0) * (100.0 * 64.0));
|
||||||
double stepRatioY = M_PI / ((48.0 / 15.0) * (100.0 * 64.0));
|
double stepRatioY = M_PI / ((48.0 / 15.0) * (100.0 * 64.0));
|
||||||
|
|
||||||
stepX = angleX / stepRatioX;
|
stepX = angleX / stepRatioX;
|
||||||
stepY = angleY / stepRatioY;
|
stepY = angleY / stepRatioY;
|
||||||
|
|
@ -25,18 +21,18 @@ double rollCorrection(double x, double max, double width) {
|
||||||
return x - correction;
|
return x - correction;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cartesianToPolar(long &stepX, long &stepY, double zeroX, double zeroY, double x, double y, double z) {
|
void cartesianToPolar(long &stepX, long &stepY, double zeroX, double zeroY,
|
||||||
//TODO remove magic numbers
|
double x, double y, double z) {
|
||||||
double distance = 166.0; //turret to screen
|
// TODO remove magic numbers
|
||||||
double offsetY = 21.0; //laser to stand
|
double distance = 166.0; // turret to screen
|
||||||
double offsetX = 0.0; //unused
|
double offsetY = 21.0; // laser to stand
|
||||||
|
double offsetX = 0.0; // unused
|
||||||
|
|
||||||
x = -x; //natural axis direction
|
x = -x; // natural axis direction
|
||||||
double dX = x + offsetX;
|
double dX = x + offsetX;
|
||||||
double dY = rollCorrection(y + offsetY, 0.2, 400.0);
|
double dY = rollCorrection(y + offsetY, 0.2, 400.0);
|
||||||
double dZ = z + distance;
|
double dZ = z + distance;
|
||||||
|
|
||||||
|
|
||||||
double roll = atan2(4.0, 236.0);
|
double roll = atan2(4.0, 236.0);
|
||||||
double rollY = dX * tan(roll);
|
double rollY = dX * tan(roll);
|
||||||
double rollX = dY * tan(roll);
|
double rollX = dY * tan(roll);
|
||||||
|
|
|
||||||
3
maths.h
3
maths.h
|
|
@ -1,4 +1,5 @@
|
||||||
double degToRad(double deg);
|
double degToRad(double deg);
|
||||||
double radToDeg(double rad);
|
double radToDeg(double rad);
|
||||||
void angleToStep(long &stepX, long &stepY, double angleX, double angleY);
|
void angleToStep(long &stepX, long &stepY, double angleX, double angleY);
|
||||||
void cartesianToPolar(long &stepX, long &stepY, double zeroX, double zeroY, double x, double y, double z);
|
void cartesianToPolar(long &stepX, long &stepY, double zeroX, double zeroY,
|
||||||
|
double x, double y, double z);
|
||||||
|
|
|
||||||
87
turret.cpp
87
turret.cpp
|
|
@ -1,12 +1,13 @@
|
||||||
#include <kissStepper.h>
|
|
||||||
#include "config.h"
|
|
||||||
#include "turret.h"
|
#include "turret.h"
|
||||||
|
#include "config.h"
|
||||||
#include "maths.h"
|
#include "maths.h"
|
||||||
|
#include <kissStepper.h>
|
||||||
|
|
||||||
Turret::Turret(
|
Turret::Turret(int pin_x_direction, int pin_x_pulse, int pin_x_enable,
|
||||||
int pin_x_direction, int pin_x_pulse, int pin_x_enable, int pin_x_home,
|
int pin_x_home, int pin_y_direction, int pin_y_pulse,
|
||||||
int pin_y_direction, int pin_y_pulse, int pin_y_enable, int pin_y_home,
|
int pin_y_enable, int pin_y_home, int pin_laser)
|
||||||
int pin_laser) : _stepperX(pin_x_direction, pin_x_pulse, pin_x_enable), _stepperY(pin_y_direction, pin_y_pulse, pin_y_enable) {
|
: _stepperX(pin_x_direction, pin_x_pulse, pin_x_enable),
|
||||||
|
_stepperY(pin_y_direction, pin_y_pulse, pin_y_enable) {
|
||||||
|
|
||||||
_pin_x_direction = pin_x_direction;
|
_pin_x_direction = pin_x_direction;
|
||||||
_pin_x_pulse = pin_x_pulse;
|
_pin_x_pulse = pin_x_pulse;
|
||||||
|
|
@ -21,7 +22,7 @@ Turret::Turret(
|
||||||
_pin_laser = pin_laser;
|
_pin_laser = pin_laser;
|
||||||
}
|
}
|
||||||
|
|
||||||
Turret& Turret::init() {
|
Turret &Turret::init() {
|
||||||
pinMode(_pin_laser, OUTPUT);
|
pinMode(_pin_laser, OUTPUT);
|
||||||
|
|
||||||
pinMode(_pin_x_direction, OUTPUT);
|
pinMode(_pin_x_direction, OUTPUT);
|
||||||
|
|
@ -40,7 +41,7 @@ Turret& Turret::init() {
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Turret& Turret::gotoHome() {
|
Turret &Turret::gotoHome() {
|
||||||
long xStop = 0;
|
long xStop = 0;
|
||||||
long yStop = 0;
|
long yStop = 0;
|
||||||
|
|
||||||
|
|
@ -71,8 +72,8 @@ Turret& Turret::gotoHome() {
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Turret& Turret::gotoZero() {
|
Turret &Turret::gotoZero() {
|
||||||
//TODO remove magic numbers
|
// TODO remove magic numbers
|
||||||
_stepperX.prepareMove(_homeX + 9300);
|
_stepperX.prepareMove(_homeX + 9300);
|
||||||
_stepperY.prepareMove(_homeY + 3500);
|
_stepperY.prepareMove(_homeY + 3500);
|
||||||
|
|
||||||
|
|
@ -80,9 +81,12 @@ Turret& Turret::gotoZero() {
|
||||||
bool yStop = false;
|
bool yStop = false;
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
if (xStop && yStop) break;
|
if (xStop && yStop)
|
||||||
if (!xStop) xStop = _stepperY.move() == STATE_STOPPED;
|
break;
|
||||||
if (!yStop) yStop = _stepperX.move() == STATE_STOPPED;
|
if (!xStop)
|
||||||
|
xStop = _stepperY.move() == STATE_STOPPED;
|
||||||
|
if (!yStop)
|
||||||
|
yStop = _stepperX.move() == STATE_STOPPED;
|
||||||
}
|
}
|
||||||
|
|
||||||
_zeroX = _stepperX.getPos();
|
_zeroX = _stepperX.getPos();
|
||||||
|
|
@ -91,18 +95,19 @@ Turret& Turret::gotoZero() {
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Turret& Turret::calibrate() {
|
Turret &Turret::calibrate() {
|
||||||
gotoHome();
|
gotoHome();
|
||||||
gotoZero();
|
gotoZero();
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Turret& Turret::moveTo(double x, double y, double z, Unit unit) {
|
Turret &Turret::moveTo(double x, double y, double z, Unit unit) {
|
||||||
long stepX;
|
long stepX;
|
||||||
long stepY;
|
long stepY;
|
||||||
|
|
||||||
if (unit == Unit::MM) {
|
if (unit == Unit::MM) {
|
||||||
cartesianToPolar(stepX, stepY, _zeroX, _zeroY, x / 10.0, y / 10.0, z / 10.0);
|
cartesianToPolar(stepX, stepY, _zeroX, _zeroY, x / 10.0, y / 10.0,
|
||||||
|
z / 10.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unit == Unit::CM) {
|
if (unit == Unit::CM) {
|
||||||
|
|
@ -110,7 +115,8 @@ Turret& Turret::moveTo(double x, double y, double z, Unit unit) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unit == Unit::M) {
|
if (unit == Unit::M) {
|
||||||
cartesianToPolar(stepX, stepY, _zeroX, _zeroY, x * 100.0, y * 100.0, z * 100.0);
|
cartesianToPolar(stepX, stepY, _zeroX, _zeroY, x * 100.0, y * 100.0,
|
||||||
|
z * 100.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unit == Unit::STEP) {
|
if (unit == Unit::STEP) {
|
||||||
|
|
@ -126,7 +132,7 @@ Turret& Turret::moveTo(double x, double y, double z, Unit unit) {
|
||||||
angleToStep(stepX, stepY, degToRad(x), degToRad(y));
|
angleToStep(stepX, stepY, degToRad(x), degToRad(y));
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO min(valueI, -_homeI);
|
// TODO min(valueI, -_homeI);
|
||||||
_stepperX.prepareMove(_zeroX + stepX);
|
_stepperX.prepareMove(_zeroX + stepX);
|
||||||
_stepperY.prepareMove(_zeroY + stepY);
|
_stepperY.prepareMove(_zeroY + stepY);
|
||||||
|
|
||||||
|
|
@ -134,9 +140,12 @@ Turret& Turret::moveTo(double x, double y, double z, Unit unit) {
|
||||||
bool yStop = false;
|
bool yStop = false;
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
if (xStop && yStop) break;
|
if (xStop && yStop)
|
||||||
if (!xStop) xStop = _stepperX.move() == STATE_STOPPED;
|
break;
|
||||||
if (!yStop) yStop = _stepperY.move() == STATE_STOPPED;
|
if (!xStop)
|
||||||
|
xStop = _stepperX.move() == STATE_STOPPED;
|
||||||
|
if (!yStop)
|
||||||
|
yStop = _stepperY.move() == STATE_STOPPED;
|
||||||
}
|
}
|
||||||
|
|
||||||
_currentX = x;
|
_currentX = x;
|
||||||
|
|
@ -146,7 +155,7 @@ Turret& Turret::moveTo(double x, double y, double z, Unit unit) {
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Turret& Turret::moveBy(double x, double y, double z, Unit unit) {
|
Turret &Turret::moveBy(double x, double y, double z, Unit unit) {
|
||||||
long zeroXStored = _zeroX;
|
long zeroXStored = _zeroX;
|
||||||
long zeroYStored = _zeroY;
|
long zeroYStored = _zeroY;
|
||||||
|
|
||||||
|
|
@ -165,51 +174,45 @@ Turret& Turret::moveBy(double x, double y, double z, Unit unit) {
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Turret& Turret::moveToX(double x, Unit unit) {
|
Turret &Turret::moveToX(double x, Unit unit) {
|
||||||
return moveTo(x, _currentY, _currentZ, unit);
|
return moveTo(x, _currentY, _currentZ, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
Turret& Turret::moveToY(double y, Unit unit) {
|
Turret &Turret::moveToY(double y, Unit unit) {
|
||||||
return moveTo(_currentX, y, _currentZ, unit);
|
return moveTo(_currentX, y, _currentZ, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
Turret& Turret::moveToZ(double z, Unit unit) {
|
Turret &Turret::moveToZ(double z, Unit unit) {
|
||||||
return moveTo(_currentX, _currentY, z, unit);
|
return moveTo(_currentX, _currentY, z, unit);
|
||||||
}
|
}
|
||||||
|
|
||||||
Turret& Turret::moveByX(double x, Unit unit) {
|
Turret &Turret::moveByX(double x, Unit unit) { return moveBy(x, 0, 0, unit); }
|
||||||
return moveBy(x, 0, 0, unit);
|
|
||||||
}
|
|
||||||
|
|
||||||
Turret& Turret::moveByY(double y, Unit unit) {
|
Turret &Turret::moveByY(double y, Unit unit) { return moveTo(0, y, 0, unit); }
|
||||||
return moveTo(0, y, 0, unit);
|
|
||||||
}
|
|
||||||
|
|
||||||
Turret& Turret::moveByZ(double z, Unit unit) {
|
Turret &Turret::moveByZ(double z, Unit unit) { return moveTo(0, 0, z, unit); }
|
||||||
return moveTo(0, 0, z, unit);
|
|
||||||
}
|
|
||||||
|
|
||||||
Turret& Turret::getPosition(double &x, double &y, double &z, Unit unit) {
|
Turret &Turret::getPosition(double &x, double &y, double &z, Unit unit) {
|
||||||
//TODO implement
|
// TODO implement
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Turret& Turret::getHome(double &x, double &y, double &z, Unit unit) {
|
Turret &Turret::getHome(double &x, double &y, double &z, Unit unit) {
|
||||||
//TODO implement
|
// TODO implement
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Turret& Turret::getZero(double &x, double &y, double &z, Unit unit) {
|
Turret &Turret::getZero(double &x, double &y, double &z, Unit unit) {
|
||||||
//TODO implement
|
// TODO implement
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Turret& Turret::laserOn() {
|
Turret &Turret::laserOn() {
|
||||||
digitalWrite(_pin_laser, HIGH);
|
digitalWrite(_pin_laser, HIGH);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Turret& Turret::laserOff() {
|
Turret &Turret::laserOff() {
|
||||||
digitalWrite(_pin_laser, LOW);
|
digitalWrite(_pin_laser, LOW);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
57
turret.h
57
turret.h
|
|
@ -4,49 +4,38 @@
|
||||||
#include <kissStepper.h>
|
#include <kissStepper.h>
|
||||||
|
|
||||||
class Turret {
|
class Turret {
|
||||||
public:
|
public:
|
||||||
|
enum Unit { MM, CM, M, RAD, DEG, STEP };
|
||||||
|
|
||||||
enum Unit {
|
Turret(int pin_x_direction, int pin_x_pulse, int pin_x_enable, int pin_x_home,
|
||||||
MM,
|
int pin_y_direction, int pin_y_pulse, int pin_y_enable, int pin_y_home,
|
||||||
CM,
|
int pin_laser);
|
||||||
M,
|
|
||||||
RAD,
|
|
||||||
DEG,
|
|
||||||
STEP
|
|
||||||
};
|
|
||||||
|
|
||||||
Turret(
|
Turret &init();
|
||||||
int pin_x_direction, int pin_x_pulse, int pin_x_enable, int pin_x_home,
|
Turret &gotoHome();
|
||||||
int pin_y_direction, int pin_y_pulse, int pin_y_enable, int pin_y_home,
|
Turret &gotoZero();
|
||||||
int pin_laser
|
|
||||||
);
|
|
||||||
|
|
||||||
Turret& init();
|
Turret &moveTo(double x, double y, double z, Unit unit = Turret::Unit::CM);
|
||||||
Turret& gotoHome();
|
Turret &moveBy(double x, double y, double z, Unit unit = Turret::Unit::CM);
|
||||||
Turret& gotoZero();
|
|
||||||
|
|
||||||
Turret& moveTo(double x, double y, double z, Unit unit = Turret::Unit::CM);
|
Turret &moveToX(double x, Unit unit = Turret::Unit::CM);
|
||||||
Turret& moveBy(double x, double y, double z, Unit unit = Turret::Unit::CM);
|
Turret &moveToY(double y, Unit unit = Turret::Unit::CM);
|
||||||
|
Turret &moveToZ(double z, Unit unit = Turret::Unit::CM);
|
||||||
|
|
||||||
Turret& moveToX(double x, Unit unit = Turret::Unit::CM);
|
Turret &moveByX(double x, Unit unit = Turret::Unit::CM);
|
||||||
Turret& moveToY(double y, Unit unit = Turret::Unit::CM);
|
Turret &moveByY(double y, Unit unit = Turret::Unit::CM);
|
||||||
Turret& moveToZ(double z, Unit unit = Turret::Unit::CM);
|
Turret &moveByZ(double z, Unit unit = Turret::Unit::CM);
|
||||||
|
|
||||||
Turret& moveByX(double x, Unit unit = Turret::Unit::CM);
|
Turret &getPosition(double &x, double &y, double &z, Unit unit);
|
||||||
Turret& moveByY(double y, Unit unit = Turret::Unit::CM);
|
Turret &getHome(double &x, double &y, double &z, Unit unit);
|
||||||
Turret& moveByZ(double z, Unit unit = Turret::Unit::CM);
|
Turret &getZero(double &x, double &y, double &z, Unit unit);
|
||||||
|
|
||||||
Turret& getPosition(double &x, double &y, double &z, Unit unit);
|
Turret &calibrate();
|
||||||
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();
|
||||||
Turret& laserOn();
|
|
||||||
Turret& laserOff();
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
|
private:
|
||||||
kissStepper _stepperX;
|
kissStepper _stepperX;
|
||||||
kissStepper _stepperY;
|
kissStepper _stepperY;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "turret.h"
|
#include "turret.h"
|
||||||
|
|
||||||
Turret turret(
|
Turret turret(PIN_X_DIRECTION, PIN_X_PULSE, PIN_X_ENABLE, PIN_X_HOME,
|
||||||
PIN_X_DIRECTION, PIN_X_PULSE, PIN_X_ENABLE, PIN_X_HOME,
|
PIN_Y_DIRECTION, PIN_Y_PULSE, PIN_Y_ENABLE, PIN_Y_HOME,
|
||||||
PIN_Y_DIRECTION, PIN_Y_PULSE, PIN_Y_ENABLE, PIN_Y_HOME,
|
PIN_LASER);
|
||||||
PIN_LASER
|
|
||||||
);
|
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
turret.init();
|
turret.init();
|
||||||
|
|
@ -95,6 +93,4 @@ void setup() {
|
||||||
turret.gotoZero();
|
turret.gotoZero();
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue