get stepper function
This commit is contained in:
@@ -29,6 +29,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#include "DW640.h"
|
||||
|
||||
#if (MICROSTEPS == 8)
|
||||
uint8_t microstepcurve[] = {0, 50, 98, 142, 180, 212, 236, 250, 255};
|
||||
#elif (MICROSTEPS == 16)
|
||||
uint8_t microstepcurve[] = {0, 25, 50, 74, 98, 120, 141, 162, 180, 197, 212, 225, 236, 244, 250, 253, 255};
|
||||
#endif
|
||||
|
||||
/** PCA9685 constructor.
|
||||
* @param address I2C address
|
||||
* @see DW640_DEFAULT_ADDRESS
|
||||
@@ -276,6 +282,50 @@ DW_Servo *DW640::getServo(uint8_t servo) {
|
||||
|
||||
}
|
||||
|
||||
DW_Stepper *DW640::getStepper(uint16_t steps, uint8_t stepper) {
|
||||
|
||||
num--;
|
||||
|
||||
uint8_t ain1, ain2, bin1, bin2;
|
||||
|
||||
// Get the stepper
|
||||
switch(stepper) {
|
||||
case 0:
|
||||
ain1 = 2;
|
||||
ain2 = 3;
|
||||
bin1 = 4;
|
||||
bin2 = 5;
|
||||
break;
|
||||
case 1:
|
||||
ain1 = 6;
|
||||
ain2 = 7;
|
||||
bin1 = 8;
|
||||
bin2 = 9;
|
||||
break;
|
||||
case 2:
|
||||
ain1 = 10;
|
||||
ain2 = 11;
|
||||
bin1 = 12;
|
||||
bin2 = 13;
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "Stepper number must be between 1 and 3 inclusive");
|
||||
}
|
||||
|
||||
if (steppers[stepper].stepper == 0) {
|
||||
// not init'd yet!
|
||||
steppers[stepper].stepper = stepper;
|
||||
steppers[stepper].revsteps = steps;
|
||||
steppers[stepper].MC = this;
|
||||
|
||||
steppers[stepper].AIN1pin = ain1;
|
||||
steppers[stepper].AIN2pin = ain2;
|
||||
steppers[stepper].BIN1pin = bin1;
|
||||
steppers[stepper].BIN2pin = bin2;
|
||||
}
|
||||
return &steppers[stepper];
|
||||
}
|
||||
|
||||
/* Motors code */
|
||||
|
||||
DW_Motor::DW_Motor(void) {
|
||||
|
||||
@@ -57,6 +57,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#define DW_ININ 0
|
||||
#define DW_PHASE 1
|
||||
|
||||
#define MICROSTEPS 16 // 8 or 16
|
||||
|
||||
using namespace DarkWater;
|
||||
|
||||
class DW640;
|
||||
@@ -95,6 +97,27 @@ class DW_Servo {
|
||||
|
||||
};
|
||||
|
||||
class DW_Stepper {
|
||||
public:
|
||||
DW_Stepper(void);
|
||||
friend class DW640;
|
||||
|
||||
void off(void);
|
||||
void setMotorSpeed(uint16_t speed);
|
||||
uint8_t onestep(uint8_t dir, uint8_t style);
|
||||
void step(uint16_t steps, uint8_t dir, uint8_t style = DW_SINGLE);
|
||||
uint32_t usperstep;
|
||||
|
||||
private:
|
||||
uint8_t AIN1pin, AIN2pin;
|
||||
uint8_t BIN1pin, BIN2pin;
|
||||
uint16_t revsteps; // # steps per revolution
|
||||
uint8_t currentstep;
|
||||
uint8_t stepper;
|
||||
DW640 *DWC;
|
||||
|
||||
};
|
||||
|
||||
class DW640 {
|
||||
public:
|
||||
DW640(uint8_t address = DW640_DEFAULT_ADDRESS);
|
||||
@@ -124,7 +147,8 @@ class DW640 {
|
||||
void allOff();
|
||||
|
||||
DW_Motor *getMotor(uint8_t motor);
|
||||
DW_Servo *getServo(uint8_t servo);
|
||||
DW_Servo *getServo(uint8_t servo);
|
||||
DW_Stepper *getStepper(uint16_t steps, uint8_t stepper);
|
||||
|
||||
// void setStepperOff(uint8_t stepper);
|
||||
// void setStepperSpeed(uint8_t stepper, uint16_t speed);
|
||||
@@ -140,17 +164,8 @@ class DW640 {
|
||||
|
||||
DW_Motor motors[6];
|
||||
DW_Servo servos[2];
|
||||
|
||||
uint16_t revsteps; // # steps per revolution
|
||||
uint8_t currentstep;
|
||||
|
||||
|
||||
|
||||
DW_Stepper steppers[3];
|
||||
|
||||
};
|
||||
|
||||
// class DW_Stepper {
|
||||
|
||||
// }
|
||||
|
||||
#endif // DW640_H
|
||||
Reference in New Issue
Block a user