Hi guys having some trouble getting this to work.
Ive got one button namely my forward button that I want:
1- if pressed and released set the motors to a set speed.
2- if pressed and held for 1 second or so increase the the set speed by say 10 until the button is released.
3- But I also need it to stop the motors so if its been pressed once and released and its pressed again stop.
My code does the go and stop with the button but I cant get it to increase speed when its held in?
while (WhileLoop == 1){
if (Stop == 0){
int scanIncrement = 500;
panLoop.m_pos = scanIncrement;
md.setM1Brake(300);
md.setM2Brake(300);
pixy.setServos(panLoop.m_pos, tiltLoop.m_pos);
//Serial.print("Speed:");
///Serial.println(Speed);
Stop = 1;
}
buttonStateLeft = digitalRead(ButtonLeft);
buttonStateRight = digitalRead(ButtonRight);
buttonStateForward = digitalRead(ButtonForward);
buttonStateStop = digitalRead(ButtonStop);
if (buttonStateForward != lastButtonStateForward){
if (buttonStateForward == HIGH) {
buttonPushCounterForward ++ ;
}
delay(5);
}
if (buttonStateStop != lastButtonStateStop){
if (buttonStateStop == HIGH) {
buttonPushCounterStop ++ ;
}
delay(5);
}
if (buttonStateRight == HIGH){
md.setM1Brake(250);
md.setM2Speed(-200);
}
if (buttonStateLeft == HIGH){
md.setM1Speed(-250);
md.setM1Brake(250);
}
if (buttonPushCounterForward == 1) {
md.setM1Speed(-250);
md.setM2Speed(-250);
}
else if (buttonPushCounterForward == 2) {
md.setM1Brake(250);
md.setM2Brake(250);
buttonPushCounterForward = 0;
}
else{
md.setM1Speed(0);
md.setM2Speed(0);
}
//Serial.print("Whileloop:");
//Serial.println();
//delay(50);
lastButtonStateForward = buttonStateForward;
lastButtonStateStop = buttonStateStop;
if (buttonPushCounterStop == 1){
WhileLoop = 0;
buttonPushCounterStop = 0;
buzz(Buzzer, 2500, 500);
delay(50);
buzz(Buzzer, 2500, 500);
delay(1200);
break;
}
}
Thanks for any help.