#include <Stepper.h>
int stepsPerRevolution = 2048;
int motSpeed = 50;
int dt = 500;
int state_fam = 0;
int state_fam_old;
const byte limit1Pin = 10;
const byte limit2Pin = 11;
const byte limit3Pin = 12;
const byte button4Pin = 13;
byte but4State;
int motDir = 1;
Stepper myStepper1(stepsPerRevolution, 2, 4, 3, 5);
Stepper myStepper2(stepsPerRevolution, 6, 8, 7, 9);
void setup() {
Serial.begin(115200);
myStepper1.setSpeed(motSpeed);
myStepper2.setSpeed(motSpeed);
pinMode(limit1Pin, INPUT_PULLUP);
pinMode(limit2Pin, INPUT_PULLUP);
pinMode(limit3Pin, INPUT_PULLUP);
pinMode(button4Pin, INPUT_PULLUP);
but4State = digitalRead(button4Pin);
myStepper1.setSpeed(motSpeed);
myStepper2.setSpeed(motSpeed);
while (digitalRead(limit3Pin) == HIGH) {
myStepper2.step(motDir * -1);
delay(50);
}
}
byte runStepper1 = false;
byte runStepper2 = false;
const int Stop = 5;
void loop() {
Serial.print("state: ");
Serial.println(state_fam);
switch (state_fam) {
case 0:
runStepper1 = true;
myStepper1.step(motDir * 1);
if (digitalRead(limit1Pin) == LOW) {
runStepper1 = false;
state_fam = 1;
}
break;
case 1:
runStepper2 = true;
myStepper2.step(motDir * 1);
if (digitalRead(limit2Pin) == LOW ) {
runStepper2 = false;
state_fam = 2;
}
break;
case 2:
delay(1000);
runStepper2 = false;
delay(1000);
state_fam = 3;
case 3:
runStepper2 = true;
myStepper2.step(motDir * -1);
if (digitalRead(limit3Pin) == LOW) {
runStepper2 = false;
state_fam = 4;
}
break;
case 4:
runStepper1 = true;
myStepper1.step(motDir * 1);
if (digitalRead(limit1Pin) == HIGH) {
runStepper1 = true;
state_fam = 0;
}
break;
case Stop:
break;
}
byte but = digitalRead (button4Pin);
if (but4State != but) {
but4State = but;
delay (20);
if (LOW == but) {
if (Stop == state_fam)
state_fam = state_fam_old;
else {
state_fam_old = state_fam;
state_fam = Stop;
}
}
}
delay(50);
}