From 745d009accac68818d8d920201d034cd23b1b837 Mon Sep 17 00:00:00 2001 From: IMback Date: Mon, 25 Sep 2017 19:22:43 +0200 Subject: [PATCH] compile fix --- plotter.cpp | 25 +++++++++++++------------ plotter.h | 4 ++-- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/plotter.cpp b/plotter.cpp index 40043ad..90521f9 100644 --- a/plotter.cpp +++ b/plotter.cpp @@ -60,14 +60,14 @@ void Plotter::pu() } } -static uint16_t Plotter::diamondAngle(int16_t y, int16_t x) //0 - 40000 +uint16_t Plotter::diamondAngle(int16_t y, int16_t x) //0 - 40000 { const int32_t scalar = 10000; if (y >= 0) return (x >= 0 ? ((int32_t)y*scalar)/(x+y) : 1*scalar-((int32_t)x*scalar)/(-x+y)); else return (x < 0 ? 2*scalar-((int32_t)y*scalar)/(-x-y) : 3*scalar+((int32_t)x*scalar)/(x-y)); } -static uint16_t calculateDelayTime(uint16_t currentDiamondAngle, uint16_t prevDiamondAngle, uint16_t prevSteps) +uint16_t Plotter::calculateDelayTime(uint16_t currentDiamondAngle, uint16_t prevDiamondAngle, uint16_t prevSteps) { uint16_t delayTime = abs(currentDiamondAngle - prevDiamondAngle); if ( delayTime > 20000) delayTime = delayTime - 20000; @@ -85,11 +85,11 @@ void Plotter::moveRelative(int32_t deltaX, int32_t deltaY) if( deltaX > 50 || deltaY > 50 ) { //compensate backlash - if((prevDiamondAngle < 10000 || prevDiamondAngle > 30000 ) && deltaX < 0) deltaX = deltaX - BACKLASHX; - else ((prevDiamondAngle > 10000 && prevDiamondAngle < 30000 ) && deltaX > 0) deltaX = deltaX + BACKLASHX; + if((_prevDiamondAngle < 10000 || _prevDiamondAngle > 30000 ) && deltaX < 0) deltaX = deltaX - BACKLASHX; + else if ((_prevDiamondAngle > 10000 && _prevDiamondAngle < 30000 ) && deltaX > 0) deltaX = deltaX + BACKLASHX; - if((prevDiamondAngle < 20000) && deltaY < 0) deltaY = deltaY - BACKLASHY; - else if ((prevDiamondAngle > 20000) && deltaY > 0) deltaY = deltaY + BACKLASHY; + if((_prevDiamondAngle < 20000) && deltaY < 0) deltaY = deltaY - BACKLASHY; + else if ((_prevDiamondAngle > 20000) && deltaY > 0) deltaY = deltaY + BACKLASHY; //delay uint16_t currentDiamondAngle = diamondAngle(deltaX,deltaY); @@ -123,17 +123,18 @@ void Plotter::moveRelative(int32_t deltaX, int32_t deltaY) _pwm.setDutyB(65535-(currentPos.y+i*StepSizeY)*SCALEY); _delay_us(2000); } + //set prev + _prevDiamondAngle = currentDiamondAngle; + _prevSteps = steps; } - else delay_us(100); + else _delay_us(100); _pwm.setDutyA(65535-(deltaX+currentPos.x)*SCALEX); - _pwm.setDutyB(65535-(deltaY+currentPos.Y)*SCALEY); + _pwm.setDutyB(65535-(deltaY+currentPos.y)*SCALEY); if( deltaX > 50 || deltaY > 50 ) { - //set prev - prevDiamondAngle = currentDiamondAngle; - prevSteps = steps; + //set current position currentPos.x = deltaX+currentPos.x; currentPos.y = deltaY+currentPos.y; } @@ -148,6 +149,6 @@ void Plotter::moveto(const uint16_t nx, const uint16_t ny) { int32_t deltaX = nx - currentPos.x; //117 units per mm int32_t deltaY = ny - currentPos.y; //121 units per mm - moveRelatvie(deltaX, deltaY); + moveRelative(deltaX, deltaY); } diff --git a/plotter.h b/plotter.h index 4e0f157..55e8676 100644 --- a/plotter.h +++ b/plotter.h @@ -26,8 +26,8 @@ private: Serial* _serial; - static uint16_t diamondAngle(int16_t y, int16_t x); - static uint16_t calculateDelayTime(uint16_t currentDiamondAngle, uint16_t prevDiamondAngle, uint16_t prevSteps); + uint16_t diamondAngle(int16_t y, int16_t x); + uint16_t calculateDelayTime(uint16_t currentDiamondAngle, uint16_t prevDiamondAngle, uint16_t prevSteps); public: