-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathStepperMotor-Serial.ino
135 lines (109 loc) · 2.75 KB
/
StepperMotor-Serial.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <MobaTools.h>
const byte stepPin0 = 3;
const byte dirPin0 = 2;
const byte stepPin1 = 5;
const byte dirPin1 = 4;
MoToStepper stepper0( 200, STEPDIR );
MoToStepper stepper1( 200, STEPDIR );
void setup()
{
Serial.begin(115200);
Serial.setTimeout(1);
stepper0.attach( stepPin0, dirPin0 );
stepper0.setSpeedSteps(750); // = 75 steps/second (steps in 10 seconds)
stepper0.setRampLen(10);
stepper0.setZero();
stepper1.attach( stepPin1, dirPin1 );
stepper1.setSpeedSteps(500); // = 50 steps/second (steps in 10 seconds)
stepper1.setRampLen(10);
stepper1.setZero();
}
void loop()
{
int x = Serial.readString().toInt();
if (x != 0)
{
//stepper0.setSpeedSteps(x);
moveStepper0(100, x);
}
//moveStepper0(100, 500);
//moveStepper1(100, 500);
//delay(5000);
}
void moveStepper0(long stepPosToMove, long stepSpeed)
{
stepper0.setSpeedSteps(stepSpeed);
stepper0.moveTo(stepPosToMove);
stepper0.setZero();
}
void moveStepper1(long stepPosToMove, long stepSpeed)
{
stepper1.setSpeedSteps(stepSpeed);
stepper1.moveTo(stepPosToMove);
stepper1.setZero();
}
/* Nonblocking version
#include <MobaTools.h>
#define HOLDING true
#define ON_MOVE false
const byte stepPin0 = 3;
const byte dirPin0 = 2;
const byte stepPin1 = 5;
const byte dirPin1 = 4;
unsigned long timer = 0;
MoToStepper stepper0( 200, STEPDIR );
MoToStepper stepper1( 200, STEPDIR );
bool mode = false;
bool moving = false;
void setup()
{
Serial.begin(115200);
stepper0.attach( stepPin0, dirPin0 );
stepper0.setSpeedSteps(750); // = 75 steps/second (steps in 10 seconds)
stepper0.setRampLen(10);
stepper0.setZero();
stepper1.attach( stepPin1, dirPin1 );
stepper1.setSpeedSteps(500); // = 50 steps/second (steps in 10 seconds)
stepper1.setRampLen(10);
stepper1.setZero();
}
void loop()
{
// how many steps, speed (steps/sec * 10, 2000 = 200 sps)
moveStepper(stepper0, 200, 750);
moveStepper(stepper1, 100, 500);
// time between move in millis()
holdup(5000);
}
void moveStepper(MoToStepper stepper, long stepsToMove, long stepSpeed)
{
if (mode == ON_MOVE) // time to go?
{
if (moving == false) // stopped, set speed and steps. set to move
{
stepper.setSpeedSteps(stepSpeed);
stepper.move(stepsToMove);
moving = true;
}
else // in motion, check for ending position. mode to hold on end
{
if (stepper.moving() == 0)
{
mode = HOLDING;
moving = false;
timer = millis(); // record current time
}
}
}
}
void holdup(unsigned long stepDelay) // dwell between moves
{
if(mode == HOLDING)
{
if(millis() - timer >= stepDelay)
{
mode = ON_MOVE; // time to move again
}
}
}
*/