make it work with drv8825 driver

This commit is contained in:
2019-05-28 15:04:30 +03:00
parent 8ec0c1f108
commit 3ce647b2ab
3 changed files with 17 additions and 139 deletions

View File

@@ -12,14 +12,14 @@
#define EGG_LENGTH 50.0 #define EGG_LENGTH 50.0
#define X_DEGREES_PER_MM (X_LIMIT / EGG_LENGTH) #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 #define DEF_RPM 2
Stepper eggStepper(28, 29, 30, 31, STEPS_PER_REVOLUTION, 0, Y_DEGREES_PER_MM); Stepper eggStepper(24, 25, STEPS_PER_REVOLUTION, 0, Y_DEGREES_PER_MM);
Stepper servoStepper(24, 25, 26, 27, -STEPS_PER_REVOLUTION, X_LIMIT, Stepper servoStepper(28, 29, -STEPS_PER_REVOLUTION, X_LIMIT,
X_DEGREES_PER_MM); X_DEGREES_PER_MM);
Pen pen(23, 100, 150); Pen pen(23, 100, 180);
float eggStepperDelay; float eggStepperDelay;
float servoStepperDelay; float servoStepperDelay;

View File

@@ -4,11 +4,8 @@
class Stepper { class Stepper {
private: private:
int stepsPerRevolution; int stepsPerRevolution;
unsigned int pin1; unsigned int stepPin;
unsigned int pin2; unsigned int dirPin;
unsigned int pin3;
unsigned int pin4;
unsigned int curStep = 1;
unsigned int remainingSteps; unsigned int remainingSteps;
float degreesPerMM; float degreesPerMM;
bool direction; bool direction;
@@ -18,7 +15,7 @@ class Stepper {
int limit; int limit;
public: public:
Stepper(int pin1, int pin2, int pin3, int pin4, int stepsPerRevolution, Stepper(int stepPin, int dirPin, int stepsPerRevolution,
int limit, float degreesPerMM); int limit, float degreesPerMM);
void step(int steps); void step(int steps);
int getRemainingSteps(); int getRemainingSteps();

View File

@@ -1,142 +1,23 @@
#include "Stepper.h" #include "Stepper.h"
#include <Arduino.h> #include <Arduino.h>
void Stepper::clockwise() { Stepper::Stepper(int stepPin, int dirPin,
switch (curStep) { int stepsPerRevolution, int limit, float degreesPerMM)
case 1: : dirPin(dirPin),
digitalWrite(pin4, HIGH); stepPin(stepPin),
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),
stepsPerRevolution(stepsPerRevolution), stepsPerRevolution(stepsPerRevolution),
limit(limit), limit(limit),
degreesPerMM(degreesPerMM) { degreesPerMM(degreesPerMM) {
pinMode(pin1, OUTPUT); pinMode(dirPin, OUTPUT);
pinMode(pin2, OUTPUT); pinMode(stepPin, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
} }
void Stepper::doStep() { void Stepper::doStep() {
if (remainingSteps > 0) { if (remainingSteps > 0) {
if (direction) { digitalWrite(dirPin, direction);
clockwise(); digitalWrite(stepPin, 1);
} else { delayMicroseconds(2);
counterClockwise(); digitalWrite(stepPin, 0);
}
remainingSteps--; remainingSteps--;
} }
} }