diff --git a/Firmware/MotorControl/include/Globals.h b/Firmware/MotorControl/include/Globals.h index 3133d76..89df22d 100644 --- a/Firmware/MotorControl/include/Globals.h +++ b/Firmware/MotorControl/include/Globals.h @@ -12,14 +12,14 @@ #define EGG_LENGTH 50.0 #define X_DEGREES_PER_MM (X_LIMIT / EGG_LENGTH) -#define STEPS_PER_REVOLUTION 4076 +#define STEPS_PER_REVOLUTION (360/1.8) * 32 #define DEF_RPM 2 -Stepper eggStepper(28, 29, 30, 31, STEPS_PER_REVOLUTION, 0, Y_DEGREES_PER_MM); -Stepper servoStepper(24, 25, 26, 27, -STEPS_PER_REVOLUTION, X_LIMIT, +Stepper eggStepper(24, 25, STEPS_PER_REVOLUTION, 0, Y_DEGREES_PER_MM); +Stepper servoStepper(28, 29, -STEPS_PER_REVOLUTION, X_LIMIT, X_DEGREES_PER_MM); -Pen pen(23, 100, 150); +Pen pen(23, 100, 180); float eggStepperDelay; float servoStepperDelay; diff --git a/Firmware/MotorControl/include/Stepper.h b/Firmware/MotorControl/include/Stepper.h index d77ae4e..726a843 100644 --- a/Firmware/MotorControl/include/Stepper.h +++ b/Firmware/MotorControl/include/Stepper.h @@ -4,11 +4,8 @@ class Stepper { private: int stepsPerRevolution; - unsigned int pin1; - unsigned int pin2; - unsigned int pin3; - unsigned int pin4; - unsigned int curStep = 1; + unsigned int stepPin; + unsigned int dirPin; unsigned int remainingSteps; float degreesPerMM; bool direction; @@ -18,7 +15,7 @@ class Stepper { int limit; public: - Stepper(int pin1, int pin2, int pin3, int pin4, int stepsPerRevolution, + Stepper(int stepPin, int dirPin, int stepsPerRevolution, int limit, float degreesPerMM); void step(int steps); int getRemainingSteps(); diff --git a/Firmware/MotorControl/src/Stepper.cpp b/Firmware/MotorControl/src/Stepper.cpp index 9fb3bad..3c2fd63 100644 --- a/Firmware/MotorControl/src/Stepper.cpp +++ b/Firmware/MotorControl/src/Stepper.cpp @@ -1,142 +1,23 @@ #include "Stepper.h" #include -void Stepper::clockwise() { - switch (curStep) { - case 1: - digitalWrite(pin4, HIGH); - digitalWrite(pin3, LOW); - digitalWrite(pin2, LOW); - digitalWrite(pin1, LOW); - break; - case 2: - digitalWrite(pin4, HIGH); - digitalWrite(pin3, HIGH); - digitalWrite(pin2, LOW); - digitalWrite(pin1, LOW); - break; - case 3: - digitalWrite(pin4, LOW); - digitalWrite(pin3, HIGH); - digitalWrite(pin2, LOW); - digitalWrite(pin1, LOW); - break; - case 4: - digitalWrite(pin4, LOW); - digitalWrite(pin3, HIGH); - digitalWrite(pin2, HIGH); - digitalWrite(pin1, LOW); - break; - case 5: - digitalWrite(pin4, LOW); - digitalWrite(pin3, LOW); - digitalWrite(pin2, HIGH); - digitalWrite(pin1, LOW); - break; - case 6: - digitalWrite(pin4, LOW); - digitalWrite(pin3, LOW); - digitalWrite(pin2, HIGH); - digitalWrite(pin1, HIGH); - break; - case 7: - digitalWrite(pin4, LOW); - digitalWrite(pin3, LOW); - digitalWrite(pin2, LOW); - digitalWrite(pin1, HIGH); - break; - case 8: - digitalWrite(pin4, HIGH); - digitalWrite(pin3, LOW); - digitalWrite(pin2, LOW); - digitalWrite(pin1, HIGH); - } - if (curStep == 8) { - curStep = 1; - } else { - curStep++; - } -} - -void Stepper::counterClockwise() { - switch (curStep) { - case 1: - digitalWrite(pin1, HIGH); - digitalWrite(pin2, LOW); - digitalWrite(pin3, LOW); - digitalWrite(pin4, LOW); - break; - case 2: - digitalWrite(pin1, HIGH); - digitalWrite(pin2, HIGH); - digitalWrite(pin3, LOW); - digitalWrite(pin4, LOW); - break; - case 3: - digitalWrite(pin1, LOW); - digitalWrite(pin2, HIGH); - digitalWrite(pin3, LOW); - digitalWrite(pin4, LOW); - break; - case 4: - digitalWrite(pin1, LOW); - digitalWrite(pin2, HIGH); - digitalWrite(pin3, HIGH); - digitalWrite(pin4, LOW); - break; - case 5: - digitalWrite(pin1, LOW); - digitalWrite(pin2, LOW); - digitalWrite(pin3, HIGH); - digitalWrite(pin4, LOW); - break; - case 6: - digitalWrite(pin1, LOW); - digitalWrite(pin2, LOW); - digitalWrite(pin3, HIGH); - digitalWrite(pin4, HIGH); - break; - case 7: - digitalWrite(pin1, LOW); - digitalWrite(pin2, LOW); - digitalWrite(pin3, LOW); - digitalWrite(pin4, HIGH); - break; - case 8: - digitalWrite(pin1, HIGH); - digitalWrite(pin2, LOW); - digitalWrite(pin3, LOW); - digitalWrite(pin4, HIGH); - } - if (curStep == 8) { - curStep = 1; - } else { - curStep++; - } -} - -Stepper::Stepper(int pin1, int pin2, int pin3, int pin4, int stepsPerRevolution, - int limit, float degreesPerMM) - : pin1(pin1), - pin2(pin2), - pin3(pin3), - pin4(pin4), +Stepper::Stepper(int stepPin, int dirPin, + int stepsPerRevolution, int limit, float degreesPerMM) + : dirPin(dirPin), + stepPin(stepPin), stepsPerRevolution(stepsPerRevolution), limit(limit), degreesPerMM(degreesPerMM) { - pinMode(pin1, OUTPUT); - pinMode(pin2, OUTPUT); - pinMode(pin3, OUTPUT); - pinMode(pin4, OUTPUT); + pinMode(dirPin, OUTPUT); + pinMode(stepPin, OUTPUT); } void Stepper::doStep() { if (remainingSteps > 0) { - if (direction) { - clockwise(); - } else { - counterClockwise(); - } + digitalWrite(dirPin, direction); + digitalWrite(stepPin, 1); + delayMicroseconds(2); + digitalWrite(stepPin, 0); remainingSteps--; } }