compile fix
This commit is contained in:
		
							parent
							
								
									303f32ad6d
								
							
						
					
					
						commit
						745d009acc
					
				
					 2 changed files with 15 additions and 14 deletions
				
			
		
							
								
								
									
										25
									
								
								plotter.cpp
									
										
									
									
									
								
							
							
						
						
									
										25
									
								
								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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue