-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathstepper_drivers.cpp
More file actions
153 lines (110 loc) · 2.83 KB
/
stepper_drivers.cpp
File metadata and controls
153 lines (110 loc) · 2.83 KB
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include "stepper_drivers.h"
#include "starsynctrackers.h"
extern SSTVARS sstvars;
boolean reset_started = false;
#if STEPPER_DRIVER == 0
Adafruit_MotorShield AFMS;
Adafruit_StepperMotor* myStepper1;
void stepper_init() {
// Create the motor shield object with the default I2C address
AFMS = Adafruit_MotorShield();
// Or, create it with a different I2C address (say for stacking)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61);
// create with the default frequency 1.6KHz
AFMS.begin();
// motor port #1 M1 and M2
myStepper1 = AFMS.getStepper(sstvars.stepsPerRotation, 1);
// motor port #2 (M3 and M4)
//*myStepper1 = AFMS.getStepper(sstvars.stepsPerRotation, 2);
}
// you can change these to DOUBLE or INTERLEAVE or MICROSTEP!
void stepper_forwardstep1() {
myStepper1->onestep(FORWARD, MICROSTEP);
}
void stepper_backwardstep1() {
myStepper1->onestep(BACKWARD, MICROSTEP);
}
AccelStepper Astepper1(stepper_forwardstep1, stepper_backwardstep1); // use functions to step
unsigned long reset_start_ms = 0.0;
unsigned long reset_diff_ms = 0.0;
unsigned long reset_count = 0;
void stepper_reset_lp() {
myStepper1->onestep(BACKWARD, DOUBLE);
delayMicroseconds(300);
}
void stepper_reset_done() {
Astepper1.setSpeed(0);
Astepper1.runSpeed();
}
#endif
#if STEPPER_DRIVER == 1
AccelStepper Astepper1(1, 9, 8);
void stepper_init() {
}
void stepper_reset_lp() {
if (!reset_started) {
reset_started = true;
if (sstvars.dir > 0) {
digitalWrite(8, HIGH);
}
}
digitalWrite(9, HIGH);
delayMicroseconds(150);
digitalWrite(9, LOW);
delayMicroseconds(150);
}
void stepper_reset_done() {
digitalWrite(8, LOW);
}
#endif
#if STEPPER_DRIVER == 2
#include <AFMotor.h>
AF_Stepper myStepper1(sstvars.stepsPerRotation, 1);
void stepper_init() {
}
// you can change these to DOUBLE or INTERLEAVE or MICROSTEP!
void stepper_forwardstep1() {
myStepper1.onestep(FORWARD, MICROSTEP);
}
void stepper_backwardstep1() {
myStepper1.onestep(BACKWARD, MICROSTEP);
}
AccelStepper Astepper1(stepper_forwardstep1, stepper_backwardstep1); // use functions to step
void stepper_reset_lp() {
myStepper1->onestep(BACKWARD, DOUBLE);
delayMicroseconds(300);
}
void stepper_reset_done() {
Astepper1.setSpeed(0);
Astepper1.runSpeed();
}
#endif
#if STEPPER_DRIVER == 3
AccelStepper Astepper1(1, 9, 8);
void stepper_init() {
}
int reset_lp_loop = 0;
void stepper_reset_lp() {
if (!reset_started) {
reset_started = true;
if (sstvars.dir > 0) {
digitalWrite(8, LOW);
} else {
digitalWrite(8, HIGH);
}
}
reset_lp_loop = 0;
while(reset_lp_loop < 1) {
digitalWrite(9, HIGH);
delayMicroseconds(75);
digitalWrite(9, LOW);
delayMicroseconds(75);
reset_lp_loop++;
}
}
void stepper_reset_done() {
digitalWrite(8, LOW);
}
void fast(long counts) {
}
#endif