consider
enum { Off = HIGH, On = LOW };
#undef MyHW
#ifdef MyHW
# define limitSwitchA A1
# define limitSwitchB A2
# define solenoidA 13
# define solenoidB 12
class AccelStepper {
byte pin;
public:
AccelStepper (int a, int b, int p) {
pin = p;
pinMode (pin, OUTPUT);
digitalWrite (pin, Off);
};
void setAcceleration (int x) { };
void setMaxSpeed (int x) { };
void setSpeed (int x) { };
void runSpeed (void) { digitalWrite (pin, On); };
void stop (void) { digitalWrite (pin, Off); };
};
AccelStepper StepperA(1, 26, 10);
AccelStepper StepperB(1, 13, 11);
#else
# include <AccelStepper.h>
# define limitSwitchA 4
# define limitSwitchB 5
# define solenoidA 8
# define solenoidB 9
AccelStepper StepperA(1, 26, 25);
AccelStepper StepperB(1, 13, 12);
#endif
int state = 0;
// ---------------------interval ---------------------
unsigned long Interval = 10000;
// ---------------------millis ---------------------
unsigned long currentMillis = 0; // stores the value of millis() in each iteration of loop()
unsigned long previousMillis = 0; // will store last time the steppers were updated
//==============================================================================
void setup()
{
// Set all default speeds and accelerations
StepperA.setMaxSpeed(2000);
StepperA.setAcceleration(1000);
StepperA.setSpeed(2000);
StepperB.setMaxSpeed(2000);
StepperB.setAcceleration(1000);
StepperB.setSpeed(2000);
pinMode(limitSwitchA, INPUT_PULLUP);
pinMode(limitSwitchB, INPUT_PULLUP);
pinMode(solenoidA, OUTPUT);
pinMode(solenoidB, OUTPUT);
digitalWrite(solenoidA, Off);
digitalWrite(solenoidB, Off);
Serial.begin(115200);
}
// -----------------------------------------------------------------------------
void run (
AccelStepper stepper,
byte pinLimitSwitch )
{
if (digitalRead (pinLimitSwitch) == Off)
stepper.runSpeed ();
else
stepper.stop ();
}
//==============================================================================
void
drop (
byte pinSolenoid )
{
digitalWrite (pinSolenoid, On);
delay (500);
digitalWrite (pinSolenoid, Off);
}
//==============================================================================
void loop()
{
currentMillis = millis(); // capture the latest value of millis()
if (currentMillis - previousMillis >= Interval) {
drop (solenoidA);
drop (solenoidB);
previousMillis = currentMillis;
}
run (StepperA, limitSwitchA);
run (StepperB, limitSwitchB);
}