diff --git a/Firmware/EggbotWireless/src/ConfigManager.cpp b/Firmware/EggbotWireless/src/ConfigManager.cpp index 87af9df..b7a79bf 100644 --- a/Firmware/EggbotWireless/src/ConfigManager.cpp +++ b/Firmware/EggbotWireless/src/ConfigManager.cpp @@ -4,7 +4,10 @@ #include "ConfigManager.h" const std::unordered_map defaults{ - {{"wifiMode", "ap"}, {"wifiSSID", defSSID}, {"wifiPass", defPass}}}; + {{"wifiMode", "ap"}, + {"wifiSSID", defSSID}, + {"wifiPass", defPass}, + {"defRpm", "2"}}}; /* Max string length is 25 diff --git a/Firmware/EggbotWireless/src/GCodeParser.cpp b/Firmware/EggbotWireless/src/GCodeParser.cpp index 61b5c7a..e890bd3 100644 --- a/Firmware/EggbotWireless/src/GCodeParser.cpp +++ b/Firmware/EggbotWireless/src/GCodeParser.cpp @@ -1,6 +1,7 @@ #include #include +#include "ConfigManager.h" #include "GCodeParser.h" Command bufcmd; @@ -56,9 +57,10 @@ Command parseGCode(std::string gcode) { auto xIter = argsMap.find('X'); auto yIter = argsMap.find('Y'); auto zIter = argsMap.find('Z'); + auto fIter = argsMap.find('F'); auto endIter = argsMap.end(); - if(xIter != endIter) { + if (xIter != endIter) { bufcmd.arg1 = xIter->second; } if (yIter != endIter) { @@ -67,6 +69,11 @@ Command parseGCode(std::string gcode) { if (zIter != endIter) { bufcmd.arg3 = zIter->second; } + if (fIter != endIter) { + bufcmd.arg4 = fIter->second; + } else { + bufcmd.arg4 = atof(configManager.get("defRpm").c_str()); + } if (strcmp(command, "G00") == 0) { bufcmd.type = CommandType::G00; diff --git a/Firmware/MotorControl/include/Config.h b/Firmware/MotorControl/include/Config.h index 0fa366e..76e03ed 100644 --- a/Firmware/MotorControl/include/Config.h +++ b/Firmware/MotorControl/include/Config.h @@ -3,4 +3,8 @@ constexpr unsigned int stsUpdDelay{10}; +constexpr float defRPM{2}, defEggLength{60}, defEggDia{45}, xLimit{85}; +constexpr float defYDegPerMM{360 / (PI * defEggDia)}, + defXDegPerMM{xLimit / defEggLength}; + #endif \ No newline at end of file diff --git a/Firmware/MotorControl/include/Globals.h b/Firmware/MotorControl/include/Globals.h index 4257a0b..9040a98 100644 --- a/Firmware/MotorControl/include/Globals.h +++ b/Firmware/MotorControl/include/Globals.h @@ -1,29 +1,25 @@ #include #include "Pen.h" #include "Stepper.h" +#include "Config.h" #ifndef GLOBALS_H #define GLOBALS_H -#define EGG_DIA 45.0 -#define Y_DEGREES_PER_MM (360 / (PI * EGG_DIA)) - -#define X_LIMIT 85.0 -#define EGG_LENGTH 60.0 -#define X_DEGREES_PER_MM (X_LIMIT / EGG_LENGTH) - #define STEPS_PER_REVOLUTION (360/1.8) * 32 -#define DEF_RPM 2 -Stepper eggStepper(6, 5, STEPS_PER_REVOLUTION, 0, Y_DEGREES_PER_MM); -Stepper servoStepper(4, 3, STEPS_PER_REVOLUTION, X_LIMIT, - X_DEGREES_PER_MM); +Stepper eggStepper(6, 5, STEPS_PER_REVOLUTION, 0, defYDegPerMM); +Stepper servoStepper(4, 3, STEPS_PER_REVOLUTION, xLimit, + defXDegPerMM); Pen pen(7, 120, 180); unsigned int eggStepperDelay; unsigned int servoStepperDelay; +unsigned int eggDia; +unsigned int eggLength; + float eggStepperRPM; float servoStepperRPM; diff --git a/Firmware/MotorControl/src/main.cpp b/Firmware/MotorControl/src/main.cpp index 24d4da1..e7974b7 100644 --- a/Firmware/MotorControl/src/main.cpp +++ b/Firmware/MotorControl/src/main.cpp @@ -7,7 +7,7 @@ #include "common/Commands.h" #include "common/Status.h" -int curRPM = DEF_RPM; +int curRPM = defRPM; int adjustDelay = 100; bool needAdjust; @@ -95,6 +95,10 @@ void execCommand() { } } + if (!isnan(command.arg4)) { + curRPM = command.arg4; + } + adjustRPM(); } @@ -113,7 +117,7 @@ void setup() { OCR2A = 250; TCCR2A |= (1 << WGM20) | (1 << CS22); TIMSK2 |= (1 << OCIE2A); - servoStepper.setPos(X_LIMIT); + servoStepper.setPos(xLimit); pen.init(); }