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 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;

View File

@@ -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();

View File

@@ -1,142 +1,23 @@
#include "Stepper.h"
#include <Arduino.h>
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--;
}
}