Files
Pan-Tilt-Mount/pan_tilt_mount_nano_code/panTiltMount.h
T
2020-03-23 04:32:38 +00:00

138 lines
4.3 KiB
C

#ifndef PANTILTMOUNT_H
#define PANTILTMOUNT_H
/*------------------------------------------------------------------------------------------------------------------------------------------------------*/
#define BAUD_RATE 57600
#define PIN_MS 11
#define PIN_ENABLE 12
#define PIN_DIRECTION_PAN 5
#define PIN_STEP_PAN 6
#define PIN_DIRECTION_TILT 7
#define PIN_STEP_TILT 8
#define PIN_DIRECTION_SLIDER 9
#define PIN_STEP_SLIDER 10
#define PIN_PAN_HALL A3
#define PIN_TILT_HALL A4
#define PIN_INPUT_VOLTAGE A5
#define FULL_STEP 1
#define HALF_STEP 2
#define QUARTER_STEP 4
#define EIGHTH_STEP 8
#define SIXTEENTH_STEP 16
#define PAN_GEAR_RATIO 8.4705882352941176470588235294118 //144/17 teeth
#define TILT_GEAR_RATIO 3.047619047619047619047619047619 //64/21 teeth
#define MAX_STRING_LENGTH 10
#define ARRAY_LENGTH 20
#define INSTRUCTION_STEP_MODE 'm'
#define INSTRUCTION_PAN_STEPS 'P'
#define INSTRUCTION_TILT_STEPS 'T'
#define INSTRUCTION_PAN_DEGREES 'p'
#define INSTRUCTION_TILT_DEGREES 't'
//#define INSTRUCTION_HOME 'h'
#define INSTRUCTION_SET_HOME 'h'
#define INSTRUCTION_ENABLE 'e'
#define INSTRUCTION_SET_ACCELLERATION 'a'
#define INSTRUCTION_SET_PAN_SPEED 's'
#define INSTRUCTION_SET_TILT_SPEED 'S'
#define INSTRUCTION_INVERT_PAN 'i'
#define INSTRUCTION_INVERT_TILT 'I'
#define INSTRUCTION_SET_PAN_HALL_OFFSET 'o'
#define INSTRUCTION_SET_TILT_HALL_OFFSET 'O'
#define INSTRUCTION_TOGGLE_HOMING 'H'
#define INSTRUCTION_AUTO_HOME 'A'
#define INSTRUCTION_MULTISTEPPER_TEST_2 '2'
#define INSTRUCTION_MULTISTEPPER_TEST_3 '3'
#define INSTRUCTION_DEMO_1 '4'
#define INSTRUCTION_STATUS 'r'
#define INSTRUCTION_DEBUG_STATUS 'R'
#define INSTRUCTION_PAN_RUN_SPEED 'k'
#define INSTRUCTION_TILT_RUN_SPEED 'l'
#define INSTRUCTION_EXECUTE_MOVES ';'
#define INSTRUCTION_ADD_POSITION '#'
#define INSTRUCTION_STEP_FORWARD '>'
#define INSTRUCTION_STEP_BACKWARD '<'
#define INSTRUCTION_JUMP_TO_START '['
#define INSTRUCTION_JUMP_TO_END ']'
#define INSTRUCTION_EDIT_ARRAY 'E'
#define INSTRUCTION_ADD_DELAY 'D'
#define INSTRUCTION_CLEAR_ARRAY 'C'
#define INSTRUCTION_SAVE_TO_EEPROM 'U'
#define EEPROM_ADDRESS_ENABLE_HOMING 0
#define EEPROM_ADDRESS_LIMIT_PAN_MIN 1
#define EEPROM_ADDRESS_LIMIT_PAN_MAX 5
#define EEPROM_ADDRESS_LIMIT_TILT_MIN 9
#define EEPROM_ADDRESS_LIMIT_TILT_MAX 13
#define EEPROM_ADDRESS_PAN_MAX_SPEED 17
#define EEPROM_ADDRESS_TILT_MAX_SPEED 21
#define EEPROM_ADDRESS_PAN_ACCELERATION 25
#define EEPROM_ADDRESS_TILT_ACCELERATION 29
#define EEPROM_ADDRESS_HALL_PAN_OFFSET 33
#define EEPROM_ADDRESS_HALL_TILT_OFFSET 37
#define EEPROM_ADDRESS_INVERT_PAN 41
#define EEPROM_ADDRESS_INVERT_TILT 42
#define EEPROM_ADDRESS_MODE 43
#define VERSION_NUMBER "1.3.1"
/*------------------------------------------------------------------------------------------------------------------------------------------------------*/
struct ArrayElement {
long panStepCount = 0;
float panSpeed = 0;
long tiltStepCount = 0;
float tiltSpeed = 0;
int msDelay = 0;
};
/*------------------------------------------------------------------------------------------------------------------------------------------------------*/
void initPanTilt(void);
void serialFlush(void);
void enableSteppers(bool);
void setStepMode(int);
void serialData(void);
void mainLoop(void);
void panJogDegrees(float);
void tiltJogDegrees(float);
float panDegreesToStep(float);
float tiltDegreesToStep(float);
void statusReport(void);
void debugReport(void);
bool findHome(void);
float getBatteryVoltage(void);
float getBatteryPercentage(void);
float boundFloat(float, float, float);
float panDegreesToSteps(float);
float tiltDegreesToSteps(float);
float panStepsToDegrees(long);
float tiltStepsToDegrees(long);
int addPosition(void);
void clearArray(void);
void executeMoves(int);
void moveToIndex(int);
void gotoMovesArrayStart(void);
void gotoMovesArrayEnd(void);
void editMovesArrayIndex(void);
void addDelay(unsigned int ms);
void printProgramElements(void);
void saveEEPROM(void);
void printEEPROM(void);
void setEEPROMVariables(void);
void invertPanDirection(bool);
void invertTiltDirection(bool);
int setTargetPositions(float, float);
void toggleAutoHoming(void);
/*------------------------------------------------------------------------------------------------------------------------------------------------------*/
#endif