151 lines
4.0 KiB
C
151 lines
4.0 KiB
C
![]() |
/*
|
||
![]() |
* Movement.h
|
||
![]() |
*
|
||
|
* Created on: 16 maj 2014
|
||
|
* Author: MattLech
|
||
|
*/
|
||
|
|
||
![]() |
#ifndef MOVEMENT_H_
|
||
|
#define MOVEMENT_H_
|
||
![]() |
|
||
|
#include "Arduino.h"
|
||
|
#include "CurrentState.h"
|
||
![]() |
#include "ParameterList.h"
|
||
![]() |
#include "MovementAxis.h"
|
||
|
#include "MovementEncoder.h"
|
||
![]() |
#include "pins.h"
|
||
![]() |
#include "Config.h"
|
||
![]() |
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
![]() |
#include "Command.h"
|
||
![]() |
|
||
![]() |
class Movement
|
||
![]() |
{
|
||
![]() |
public:
|
||
![]() |
Movement();
|
||
|
Movement(Movement const &);
|
||
|
void operator=(Movement const &);
|
||
![]() |
|
||
![]() |
static Movement *getInstance();
|
||
![]() |
//int moveAbsolute( long xDest, long yDest,long zDest,
|
||
|
// unsigned int maxStepsPerSecond,
|
||
|
// unsigned int maxAccelerationStepsPerSecond);
|
||
![]() |
int moveToCoords(double xDestScaled, double yDestScaled, double zDestScaled,
|
||
![]() |
unsigned int xMaxSpd, unsigned int yMaxSpd, unsigned int zMaxSpd,
|
||
|
bool homeX, bool homeY, bool homeZ);
|
||
|
|
||
|
void handleMovementInterrupt();
|
||
![]() |
void checkEncoders();
|
||
|
|
||
![]() |
#if defined(FARMDUINO_EXP_V20)
|
||
![]() |
void initTMC2130();
|
||
![]() |
void loadSettingsTMC2130();
|
||
![]() |
#endif
|
||
|
|
||
|
|
||
![]() |
int calibrateAxis(int axis);
|
||
![]() |
//void initInterrupt();
|
||
![]() |
void enableMotors();
|
||
|
void disableMotors();
|
||
![]() |
void disableMotorsEmergency();
|
||
![]() |
void primeMotors();
|
||
![]() |
bool motorsEnabled();
|
||
|
|
||
|
void storePosition();
|
||
|
void loadSettings();
|
||
|
|
||
|
void setPositionX(long pos);
|
||
|
void setPositionY(long pos);
|
||
|
void setPositionZ(long pos);
|
||
|
|
||
![]() |
void reportEncoders();
|
||
![]() |
void getEncoderReport();
|
||
![]() |
|
||
![]() |
void test();
|
||
|
void test2();
|
||
![]() |
unsigned long i1 = 0;
|
||
|
unsigned long i2 = 0;
|
||
![]() |
unsigned long i3 = 0;
|
||
|
unsigned long i4 = 0;
|
||
![]() |
|
||
![]() |
private:
|
||
![]() |
|
||
![]() |
MovementAxis axisX;
|
||
|
MovementAxis axisY;
|
||
|
MovementAxis axisZ;
|
||
![]() |
|
||
![]() |
MovementEncoder encoderX;
|
||
|
MovementEncoder encoderY;
|
||
|
MovementEncoder encoderZ;
|
||
![]() |
|
||
![]() |
//char serialBuffer[100];
|
||
|
String serialBuffer;
|
||
|
int serialBufferLength = 0;
|
||
|
int serialBufferSending = 0;
|
||
|
int serialMessageNr = 0;
|
||
|
int serialMessageDelay = 0;
|
||
|
|
||
![]() |
void serialBufferSendNext();
|
||
|
void serialBufferEmpty();
|
||
|
|
||
![]() |
void checkAxisVsEncoder(MovementAxis *axis, MovementEncoder *encoder, float *missedSteps, long *lastPosition, long *encoderLastPosition, int *encoderUseForPos, float *encoderStepDecay, bool *encoderEnabled);
|
||
|
void checkAxisSubStatus(MovementAxis *axis, int *axisSubStatus);
|
||
![]() |
|
||
![]() |
bool axisActive[3] = { false, false, false };
|
||
|
int axisSubStep[3] = { 0, 0, 0 };
|
||
![]() |
|
||
|
void loadMotorSettings();
|
||
|
void loadEncoderSettings();
|
||
|
bool intToBool(int value);
|
||
|
|
||
|
void reportPosition();
|
||
![]() |
String getReportPosition();
|
||
|
|
||
![]() |
void storeEndStops();
|
||
|
void reportEndStops();
|
||
![]() |
void reportStatus(MovementAxis *axis, int axisSubStatus);
|
||
|
void reportCalib(MovementAxis *axis, int calibStatus);
|
||
![]() |
|
||
|
unsigned long getMaxLength(unsigned long lengths[3]);
|
||
|
bool endStopsReached();
|
||
|
|
||
![]() |
bool homeIsUp[3] = {false, false, false};
|
||
|
long speedMax[3] = {0, 0, 0 };
|
||
![]() |
long commandSpeed[3] = { 0, 0, 0 };
|
||
![]() |
long speedMin[3] = { 0, 0, 0 };
|
||
![]() |
long speedHome[3] = { 0, 0, 0 };
|
||
![]() |
long stepsAcc[3] = { 0, 0, 0 };
|
||
|
bool motorInv[3] = { false, false, false };
|
||
![]() |
long motorMaxSize[3] = { 0, 0, 0};
|
||
![]() |
bool motorStopAtMax[3] = { false, false, false };
|
||
![]() |
bool motorKeepActive[3] = { false, false, false };
|
||
|
bool motor2Inv[3] = { false, false, false };
|
||
|
bool motor2Enbl[3] = { false, false, false };
|
||
![]() |
bool motorStopAtHome[3] = { false, false, false };
|
||
![]() |
bool endStInv[3] = { false, false, false };
|
||
![]() |
bool endStInv2[3] = { false, false, false };
|
||
![]() |
bool endStEnbl[3] = { false, false, false };
|
||
|
long timeOut[3] = { 0, 0, 0 };
|
||
![]() |
long stepsPerMm[3] = { 1.0, 1.0, 1.0 };
|
||
![]() |
|
||
|
float motorConsMissedSteps[3] = { 0, 0, 0 };
|
||
![]() |
int motorConsMissedStepsPrev[3] = { 0, 0, 0 };
|
||
![]() |
long motorLastPosition[3] = { 0, 0, 0 };
|
||
|
long motorConsEncoderLastPosition[3] = { 0, 0, 0 };
|
||
|
|
||
|
int motorConsMissedStepsMax[3] = { 0, 0, 0 };
|
||
|
float motorConsMissedStepsDecay[3] = { 0, 0, 0 };
|
||
|
bool motorConsEncoderEnabled[3] = { false, false, false };
|
||
|
int motorConsEncoderType[3] = { 0, 0, 0 };
|
||
![]() |
long motorConsEncoderScaling[3] = { 0, 0, 0 };
|
||
![]() |
int motorConsEncoderUseForPos[3] = { 0, 0, 0 };
|
||
|
int motorConsEncoderInvert[3] = { 0, 0, 0 };
|
||
|
|
||
![]() |
int axisServiced = 0;
|
||
|
int axisServicedNext = 0;
|
||
![]() |
bool motorMotorsEnabled = false;
|
||
![]() |
|
||
![]() |
};
|
||
|
|
||
![]() |
#endif /* MOVEMENT_H_ */
|