Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion IOFunctions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,10 @@ void receiveEvent(int received) {
Serial.println(F("DEBUG: Turn accessory pin off"));
}
setAccessory(LOW);

#if TURNTABLE_EX_MODE == TURNTABLE
} else if (activity == 18 && !stepper.isRunning() && !calibrating) {
reverseTurntable(activity);
#endif
#ifdef USE_RT_EX_TURNTABLE
} else if ((activity >= 10) && (activity <= 17)) {
setExtra(activity);
Expand Down
23 changes: 23 additions & 0 deletions TurntableFunctions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ void moveHome() {
#endif
stepper.setCurrentPosition(0);
lastStep = 0;
lastTarget = 0;
homed = 1;
Serial.println(F("Turntable homed successfully"));
if (debug) {
Expand Down Expand Up @@ -283,6 +284,28 @@ void moveToPosition(long steps, uint8_t phaseSwitch) {
}
}

void reverseTurntable(uint8_t phaseSwitch){
// Calculate new target 180 degrees from current logical position.
long baseTarget = lastStep % fullTurnSteps;
if (baseTarget < 0) {
baseTarget += fullTurnSteps;
}
long newTarget = baseTarget + halfTurnSteps;
if (newTarget >= fullTurnSteps) {
newTarget -= fullTurnSteps;
}
// Set phase if needed
setPhase(phaseSwitch);
// Move to new target
stepper.enableOutputs();
stepper.moveTo(newTarget);
lastTarget = newTarget;
lastStep = newTarget;

Serial.print(F("Reverseing Turntable: Rotating to "));
Serial.println(newTarget);
}

// Function to set phase.
void setPhase(uint8_t phase) {
#if RELAY_ACTIVE_STATE == HIGH
Expand Down
2 changes: 2 additions & 0 deletions TurntableFunctions.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ extern bool calibrating;
extern uint8_t homed;
extern AccelStepper stepper;
extern long fullTurnSteps;
extern long halfTurnSteps;
extern long phaseSwitchStartSteps;
extern long phaseSwitchStopSteps;
extern long lastTarget;
Expand All @@ -56,6 +57,7 @@ void initiateHoming();
void initiateCalibration();
void setLEDActivity(uint8_t activity);
void setAccessory(bool state);
void reverseTurntable(uint8_t phaseSwitch);

#ifdef USE_RT_EX_TURNTABLE
void setExtra(uint8_t activity);
Expand Down
Loading