int BUTTON = 5;
int LED = 6;
int M1_ENA = 7;
int M1_DIR = 8;
int M1_STEP = 9;
int queuedSteps;
int prevButtonState;
void setup() {
pinMode(M1_ENA, OUTPUT);
pinMode(M1_DIR, OUTPUT);
pinMode(M1_STEP, OUTPUT);
pinMode(LED, OUTPUT);
pinMode(BUTTON, INPUT_PULLUP);
prevButtonState = HIGH;
}
void loop() {
int buttonState = digitalRead(BUTTON);
// when the button is released, turn the light on
// and add some steps to the queue
if (buttonState == HIGH && prevButtonState == LOW) {
queuedSteps += 25;
digitalWrite(LED, HIGH);
}
if (steps > 0) {
// we have steps in the queue, perform one
digitalWrite(M1_ENA, LOW);
digitalWrite(M1_DIR, HIGH);
digitalWrite(M1_STEP, HIGH);
digitalWrite(M1_STEP, LOW);
queuedSteps--;
}
else {
// queue is empty, turn the light off
digitalWrite(LED, LOW);
}
prevButtonState = buttonState;
// sleep for a bit
delay(50);
}