Hi, I'm trying to incorporate two buttons into my code that make a motor move forward and reverse respectively. Here is how I have written it
void loop()
{
buttonState1 = digitalRead(buttonPin1);
if ((millis() - lastDebounceTime1)>debounceDelay)
//only if time since last button press > time buffer will code run
{
if (buttonState1 == HIGH)
{
if (letsgo1 == false)
{
letsgo1=true;
starttime = millis();
dsa_point = 0;
digitalWrite(led_ProgRun, HIGH);
Serial.write(254);
Serial.write(1);//clears LCD
Serial.print("Running Sequence...");
lastDebounceTime1 = millis();
digitalWrite(SLEEP1, HIGH);
digitalWrite(SLEEP2, HIGH);
digitalWrite(SLEEP3, HIGH);
}
else //letsgo == true
{
letsgo1 = false;
digitalWrite(led_ProgRun, LOW);
lastDebounceTime1 = millis();
Serial.write(254);
Serial.write(1);//clears LCD
Serial.print("Sequence Aborted.");
digitalWrite(SLEEP1, LOW);
digitalWrite(SLEEP2, LOW);
digitalWrite(SLEEP3, LOW);
}
}
if (letsgo1==true)
{
currenttime = millis() - starttime;
if (dosomethingat[dsa_point][0] <= currenttime)
{
switch (dosomethingat[dsa_point][1])
{
case 1: //when switch variable = 1
if (dosomethingat[dsa_point][2]==1)
{
stepper1.setMaxSpeed(dosomethingat[dsa_point][3]);
stepper1.move(dosomethingat[dsa_point][4]);
}
break;
case 2:
if (dosomethingat[dsa_point][2]==1)
{
stepper2.setMaxSpeed(dosomethingat[dsa_point][3]);
stepper2.move(dosomethingat[dsa_point][4]);
}
break;
case 0: //
Serial.write(254);
Serial.write(1);//clears LCD
Serial.print("Sequence complete.");
digitalWrite(led_ProgRun, LOW);
digitalWrite(SLEEP1, LOW);
digitalWrite(SLEEP2, LOW);
digitalWrite(SLEEP3, LOW);
break;
}
dsa_point = dsa_point +1;
}
}
}
buttonState2 = digitalRead(buttonPin2);
if ((millis() - lastDebounceTime2)>debounceDelay)
{
if (buttonState2 == HIGH)
{
if (letsgo2 == false)
{
letsgo1 = false;
letsgo2 = true;
Serial.write(254);
Serial.write(1);//clears LCD
Serial.print("Withdrawing Syringes...");
lastDebounceTime2 = millis();
stepper1.setMaxSpeed(1000);
stepper1.move(-20000);
stepper2.setMaxSpeed(1000);
stepper2.move(-20000);
}
else //letsgo2 == true
{
letsgo2 = false;
digitalWrite(led_ProgRun, LOW);
lastDebounceTime2 = millis();
Serial.write(254);
Serial.write(1);//clears LCD
Serial.print("Load Syringe");
digitalWrite(SLEEP1, LOW);
digitalWrite(SLEEP2, LOW);
digitalWrite(SLEEP3, LOW);
}
}
}
stepper1.run();
stepper2.run();
}
However this does not work and the motor moves forward for about half a second when I press the first button. Any suggestions?