Enable different modes of stepping by using the settings pins. Previously was causing odd behavior because they were being used for LEDs.
This commit is contained in:
parent
d778adc7d0
commit
d7a10f9737
|
@ -2,9 +2,14 @@
|
||||||
|
|
||||||
#include "McopyProjector.h"
|
#include "McopyProjector.h"
|
||||||
|
|
||||||
McopyProjector::McopyProjector (AccelStepper takeup, AccelStepper feed) {
|
McopyProjector::McopyProjector (AccelStepper takeup, AccelStepper feed, uint8_t takeupSettingA, uint8_t takeupSettingB, uint8_t feedSettingA, uint8_t feedSettingB) {
|
||||||
_takeup = takeup;
|
_takeup = takeup;
|
||||||
_feed = feed;
|
_feed = feed;
|
||||||
|
|
||||||
|
_takeupSettingA = takeupSettingA;
|
||||||
|
_takeupSettingB = takeupSettingB;
|
||||||
|
_feedSettingA = feedSettingA;
|
||||||
|
_feedSettingB = feedSettingB;
|
||||||
}
|
}
|
||||||
|
|
||||||
void McopyProjector::begin () {
|
void McopyProjector::begin () {
|
||||||
|
@ -15,6 +20,8 @@ void McopyProjector::begin () {
|
||||||
_feed.setMaxSpeed(_speed);
|
_feed.setMaxSpeed(_speed);
|
||||||
_feed.setSpeed(_speed);
|
_feed.setSpeed(_speed);
|
||||||
_feed.setAcceleration(1000.0);
|
_feed.setAcceleration(1000.0);
|
||||||
|
|
||||||
|
setStepperMode(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void McopyProjector::setDirection (bool dir) {
|
void McopyProjector::setDirection (bool dir) {
|
||||||
|
@ -80,3 +87,33 @@ void McopyProjector::loop () {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//https://wiki.iteadstudio.com/Arduino_Dual_Step_Motor_Driver_Shield
|
||||||
|
void McopyProjector::setStepperMode (uint8_t mode) {
|
||||||
|
switch (mode) {
|
||||||
|
case 1 :
|
||||||
|
digitalWrite(_takeupSettingA, LOW);
|
||||||
|
digitalWrite(_takeupSettingB, LOW);
|
||||||
|
digitalWrite(_feedSettingA, LOW);
|
||||||
|
digitalWrite(_feedSettingB, LOW);
|
||||||
|
break;
|
||||||
|
case 2 :
|
||||||
|
digitalWrite(_takeupSettingA, HIGH);
|
||||||
|
digitalWrite(_takeupSettingB, LOW);
|
||||||
|
digitalWrite(_feedSettingA, HIGH);
|
||||||
|
digitalWrite(_feedSettingB, LOW);
|
||||||
|
break;
|
||||||
|
case 4 :
|
||||||
|
digitalWrite(_takeupSettingA, LOW);
|
||||||
|
digitalWrite(_takeupSettingB, HIGH);
|
||||||
|
digitalWrite(_feedSettingA, LOW);
|
||||||
|
digitalWrite(_feedSettingB, HIGH);
|
||||||
|
break;
|
||||||
|
case 8 :
|
||||||
|
digitalWrite(_takeupSettingA, HIGH);
|
||||||
|
digitalWrite(_takeupSettingB, HIGH);
|
||||||
|
digitalWrite(_feedSettingA, HIGH);
|
||||||
|
digitalWrite(_feedSettingB, HIGH);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -13,17 +13,17 @@ class McopyProjector {
|
||||||
|
|
||||||
uint8_t _motorSteps = 1600; //microstepped
|
uint8_t _motorSteps = 1600; //microstepped
|
||||||
uint8_t _frames = 8;
|
uint8_t _frames = 8;
|
||||||
uint8_t _stepsPerFrame = 25; //round(_motorSteps / _frames);
|
uint8_t _stepsPerFrame = 50; //round(_motorSteps / _frames);
|
||||||
float _speed = 500.0;
|
float _speed = 500.0;
|
||||||
|
|
||||||
int64_t _posTakeup = 0;
|
int64_t _posTakeup = 0;
|
||||||
int64_t _posFeed = 0;
|
int64_t _posFeed = 0;
|
||||||
|
|
||||||
const uint8_t FORWARD = 1; //CW
|
|
||||||
const uint8_t BACKWARD = 0; //CCW
|
|
||||||
|
|
||||||
const uint8_t TAKEUP = 0;
|
uint8_t _takeupSettingA = 4;
|
||||||
const uint8_t FEED = 0;
|
uint8_t _takeupSettingB = 5;
|
||||||
|
uint8_t _feedSettingA = 8;
|
||||||
|
uint8_t _feedSettingB = 9;
|
||||||
|
|
||||||
bool _dir = true;
|
bool _dir = true;
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ class McopyProjector {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
McopyProjector(AccelStepper takeup, AccelStepper feed);
|
McopyProjector(AccelStepper takeup, AccelStepper feed, uint8_t takeupSettingA, uint8_t takeupSettingB, uint8_t feedSettingA, uint8_t feedSettingB);
|
||||||
void begin();
|
void begin();
|
||||||
//0 = takeup, 1 = feed
|
//0 = takeup, 1 = feed
|
||||||
void adjust(uint8_t motor, int64_t steps);
|
void adjust(uint8_t motor, int64_t steps);
|
||||||
|
@ -40,6 +40,7 @@ class McopyProjector {
|
||||||
//true = forward, false = back
|
//true = forward, false = back
|
||||||
void frame(bool dir);
|
void frame(bool dir);
|
||||||
void setDirection(bool dir);
|
void setDirection(bool dir);
|
||||||
|
void setStepperMode(uint8_t mode);
|
||||||
void loop();
|
void loop();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -31,16 +31,20 @@
|
||||||
#define FEED_DIR_PIN 7
|
#define FEED_DIR_PIN 7
|
||||||
#define FEED_STEP_PIN 6
|
#define FEED_STEP_PIN 6
|
||||||
|
|
||||||
|
#define TAKEUP_SETTING_A 4
|
||||||
|
#define TAKEUP_SETTING_B 5
|
||||||
|
#define FEED_SETTING_A 8
|
||||||
|
#define FEED_SETTING_B 9
|
||||||
|
|
||||||
AccelStepper takeup(AccelStepper::DRIVER, TAKEUP_STEP_PIN, TAKEUP_DIR_PIN);
|
AccelStepper takeup(AccelStepper::DRIVER, TAKEUP_STEP_PIN, TAKEUP_DIR_PIN);
|
||||||
AccelStepper feed(AccelStepper::DRIVER, FEED_STEP_PIN, FEED_DIR_PIN);
|
AccelStepper feed(AccelStepper::DRIVER, FEED_STEP_PIN, FEED_DIR_PIN);
|
||||||
|
|
||||||
//CAMERA CONSTANTS
|
//PROJECTOR CONSTANTS
|
||||||
const int BUTTON = 7;
|
const int BUTTON = 10;
|
||||||
const int LED_FWD = 8;
|
const int LED_FWD = 11;
|
||||||
const int LED_BWD = 9;
|
const int LED_BWD = 12;
|
||||||
|
|
||||||
const int PROJECTOR_MOMENT = 240;
|
const int PROJECTOR_MOMENT = 240;
|
||||||
const int PROJECTOR_STEPS = 25;
|
|
||||||
|
|
||||||
//VARIABLES
|
//VARIABLES
|
||||||
volatile int projectorFrame = -1;
|
volatile int projectorFrame = -1;
|
||||||
|
@ -50,7 +54,7 @@ volatile bool direction = true;
|
||||||
volatile long start;
|
volatile long start;
|
||||||
|
|
||||||
McopySerial mcopy;
|
McopySerial mcopy;
|
||||||
McopyProjector projector(takeup, feed);
|
McopyProjector projector(takeup, feed, TAKEUP_SETTING_A, TAKEUP_SETTING_B, FEED_SETTING_A, FEED_SETTING_B);
|
||||||
|
|
||||||
void setup () {
|
void setup () {
|
||||||
pins();
|
pins();
|
||||||
|
@ -78,6 +82,11 @@ void pins () {
|
||||||
pinMode(LED_BWD, OUTPUT);
|
pinMode(LED_BWD, OUTPUT);
|
||||||
pinMode(BUTTON, INPUT_PULLUP);
|
pinMode(BUTTON, INPUT_PULLUP);
|
||||||
|
|
||||||
|
pinMode(TAKEUP_SETTING_A, OUTPUT);
|
||||||
|
pinMode(TAKEUP_SETTING_B, OUTPUT);
|
||||||
|
pinMode(FEED_SETTING_A, OUTPUT);
|
||||||
|
pinMode(FEED_SETTING_B, OUTPUT);
|
||||||
|
|
||||||
digitalWrite(LED_FWD, LOW);
|
digitalWrite(LED_FWD, LOW);
|
||||||
digitalWrite(LED_BWD, LOW);
|
digitalWrite(LED_BWD, LOW);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue