瀏覽代碼

with Router elevator object

master
Flo Smilari 3 年之前
父節點
當前提交
91ca8be6ba
共有 4 個檔案被更改,包括 14 行新增34 行删除
  1. 1
    27
      Fraestisch_SFTools.ino
  2. 10
    4
      RouterElevator.cpp
  3. 2
    2
      RouterElevator.h
  4. 1
    1
      sloeber.ino.cpp

+ 1
- 27
Fraestisch_SFTools.ino 查看文件

static const int RotEnc_Dta_Pin = 33; static const int RotEnc_Dta_Pin = 33;


static const int MOVE_DOWNWARD = -1; // motor rotation counter clock wise static const int MOVE_DOWNWARD = -1; // motor rotation counter clock wise
//static const int MOVE_UPWARD = 1; // motor rotation clock wise
//static const int MOVE_UPWARD = 1; // motor rotation clock wise


//byte limitSwitchState = 1;
//int previousDirection = 0;
int nullingTLS_intermediateState = 0; int nullingTLS_intermediateState = 0;


ExEzButton RedButton(RedBtn_Pin, false, 2000); ExEzButton RedButton(RedBtn_Pin, false, 2000);
//*** Limit switch interrupt routine //*** Limit switch interrupt routine
//********************************** //**********************************
void limitSwitchHandler() { void limitSwitchHandler() {
// limitSwitchState = digitalRead(LIMIT_SWITCH);
Router_Elevator.limitSwitchHandler(); Router_Elevator.limitSwitchHandler();
} }


case NULLING: case NULLING:
printStatus("NULLING"); printStatus("NULLING");
if (RedButton.isPressed()) { if (RedButton.isPressed()) {
// Stepper.setCurrentPositionInMillimeters(0);
// Stepper.setTargetPositionRelativeInMillimeters(0);
Router_Elevator.setZeroPosition(); Router_Elevator.setZeroPosition();
actualStatus = IDLE; actualStatus = IDLE;
} }
if (nullingTLS_intermediateState == 0) { if (nullingTLS_intermediateState == 0) {
printStatus("NULLING_TLS,0"); printStatus("NULLING_TLS,0");
//Move elevator to lowest point (lower limit switch triggers) //Move elevator to lowest point (lower limit switch triggers)
// Stepper.setTargetPositionRelativeInMillimeters(300 * MOVE_DOWNWARD);
Router_Elevator.moveToLowerLimitSwitch(); Router_Elevator.moveToLowerLimitSwitch();
actualStatus = MOVING_ELEVATOR; actualStatus = MOVING_ELEVATOR;
nullingTLS_intermediateState = 1; nullingTLS_intermediateState = 1;
printStatus("NULLING_TLS,1"); printStatus("NULLING_TLS,1");
if (RedButton.isPressed()) { if (RedButton.isPressed()) {
//Move elevator until it touch the TLS (WLS_PIN goes HIGH) //Move elevator until it touch the TLS (WLS_PIN goes HIGH)
// Stepper.setTargetPositionRelativeInMillimeters(300 * MOVE_UPWARD);
Router_Elevator.moveToUpperLimitSwitch(); Router_Elevator.moveToUpperLimitSwitch();
actualStatus = MOVING_ELEVATOR; actualStatus = MOVING_ELEVATOR;
nullingTLS_intermediateState = 2; nullingTLS_intermediateState = 2;
} else { // nullingTLS_intermediateState is 3 } else { // nullingTLS_intermediateState is 3
printStatus("NULLING_TLS,3"); printStatus("NULLING_TLS,3");
//Set the 0-Position as actual position //Set the 0-Position as actual position
// Stepper.setCurrentPositionInMillimeters(0);
// Stepper.setTargetPositionRelativeInMillimeters(0);
Router_Elevator.setZeroPosition(); Router_Elevator.setZeroPosition();
actualStatus = IDLE; actualStatus = IDLE;
nullingTLS_intermediateState = 0; nullingTLS_intermediateState = 0;


case MOVING_ELEVATOR: case MOVING_ELEVATOR:
printStatus("MOVING_ELEVATOR"); printStatus("MOVING_ELEVATOR");
// if (limitSwitchState == LOW) {
if (Router_Elevator.isLimitSwitchTriggerd()) { if (Router_Elevator.isLimitSwitchTriggerd()) {
// this will cause to stop any motion that is currently going on and block further movement in the same direction as long as the switch is active
// Stepper.setLimitSwitchActive(Stepper.LIMIT_SWITCH_COMBINED_BEGIN_AND_END);
delay(200); delay(200);
actualStatus = RELEASE_SWITCH; actualStatus = RELEASE_SWITCH;
} else { // limitSwitchState is HIGH } else { // limitSwitchState is HIGH
// if (Stepper.getDistanceToTargetSigned() == 0) {
if (Router_Elevator.isTargetPositionReached()) { if (Router_Elevator.isTargetPositionReached()) {
Serial.println("isTargetPositionReached");
actualStatus = originStatus; actualStatus = originStatus;
delay(200); delay(200);
} else if (Router_Elevator.isWLSTriggerd()) { } else if (Router_Elevator.isWLSTriggerd()) {
// } else if (WlsDetect.isConnected()) {
// if (Wls.isPlugged()) {
// Serial.println("The Tool is away from WLS");
// Stepper.clearLimitSwitchActive();
// } else if (Wls.isUnplugged()) {
// Serial.println("The Tool touched the WLS");
// Stepper.setLimitSwitchActive(Stepper.LIMIT_SWITCH_COMBINED_BEGIN_AND_END);
actualStatus = originStatus; actualStatus = originStatus;
delay(200); delay(200);
// }
} }
// Stepper.clearLimitSwitchActive();
// previousDirection = Stepper.getDirectionOfMotion();
Router_Elevator.clearLimitSwitch(); Router_Elevator.clearLimitSwitch();
Router_Elevator.checkDirection(); Router_Elevator.checkDirection();
} }


case RELEASE_SWITCH: case RELEASE_SWITCH:
printStatus("RELEASE_SWITCH"); printStatus("RELEASE_SWITCH");
// if (limitSwitchState == LOW) {
if (Router_Elevator.isLimitSwitchTriggerd()) { if (Router_Elevator.isLimitSwitchTriggerd()) {
// Stepper.moveRelativeInMillimeters(0.05 * previousDirection * -1); // move in opposite direction (away from switch)
Router_Elevator.tryReleaseLimitSwitch(); Router_Elevator.tryReleaseLimitSwitch();
} else { } else {
actualStatus = originStatus; actualStatus = originStatus;

+ 10
- 4
RouterElevator.cpp 查看文件

#include "RouterElevator.h" #include "RouterElevator.h"
RouterElevator::RouterElevator(ESP_FlexyStepper &_Stepper, Display &_display, WLS &_WlsDetect, WLS &_Wls, int _LimitSwitch, int _DOWNWARD_DIR) : RouterElevator::RouterElevator(ESP_FlexyStepper &_Stepper, Display &_display, WLS &_WlsDetect, WLS &_Wls, int _LimitSwitch, int _DOWNWARD_DIR) :
WlsDetect(_WlsDetect), Wls(_Wls) {
Stepper = _Stepper;
display = _display;
Stepper(_Stepper), display(_display), WlsDetect(_WlsDetect), Wls(_Wls) {
// Stepper = _Stepper;
// display = _display;
// WlsDetect = _WlsDetect; // WlsDetect = _WlsDetect;
// Wls = _Wls; // Wls = _Wls;
LimitSwitch = _LimitSwitch; LimitSwitch = _LimitSwitch;
void RouterElevator::limitSwitchHandler() { void RouterElevator::limitSwitchHandler() {
limitSwitchState = digitalRead(LimitSwitch); limitSwitchState = digitalRead(LimitSwitch);
Stepper.setLimitSwitchActive(Stepper.LIMIT_SWITCH_COMBINED_BEGIN_AND_END);
if (limitSwitchState == LOW) {
// this will cause to stop any motion that is currently going on and block further movement in the same direction as long as the switch is active
Stepper.setLimitSwitchActive(Stepper.LIMIT_SWITCH_COMBINED_BEGIN_AND_END);
} else {
// clear the limit switch flag to allow movement in both directions again
clearLimitSwitch();
}
} }
void RouterElevator::checkDirection() { void RouterElevator::checkDirection() {

+ 2
- 2
RouterElevator.h 查看文件

class RouterElevator { class RouterElevator {
private: private:
ESP_FlexyStepper Stepper;
Display display;
ESP_FlexyStepper &Stepper;
Display &display;
int previousDirection = 0; int previousDirection = 0;
byte limitSwitchState = 1; byte limitSwitchState = 1;
int LimitSwitch; int LimitSwitch;

+ 1
- 1
sloeber.ino.cpp 查看文件

//This is a automatic generated file //This is a automatic generated file
//Please do not modify this file //Please do not modify this file
//If you touch this file your change will be overwritten during the next build //If you touch this file your change will be overwritten during the next build
//This file has been generated on 2022-02-13 02:49:42
//This file has been generated on 2022-02-13 17:01:01


#include "Arduino.h" #include "Arduino.h"
#include <Arduino.h> #include <Arduino.h>

Loading…
取消
儲存