Hi i want to have 2 buttons the run the motor at different speeds on each press 1 button from 1-5 and the other just stop and backwards 1 speed but the forward button is going at random on each press depending how long i hold it down i tried to use de-bounce but doesn't seem to work unless i'm putting it in the wrong way can anyone help me? also have a 7 seg but that's going ok
const int forward = 11;
const int reverse = 10;
const int button = 12;
const int button2 = 13;
const int fan = 9;
int potPin = A1;
int buttonState = 0;
int button2State = 0;
int buttonPushCounter = 0;
int lastbuttonState = 0;
int lastbutton2State = 0;
int forwardState = HIGH;
void setup()
{
pinMode(forward, OUTPUT);
pinMode(button, INPUT);
pinMode(button2, INPUT);
pinMode(fan, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
Serial.begin(9600);
}
void loop()
{
{
int PWMoutput, potReading;
potReading = analogRead(potPin);
PWMoutput = map(potReading, 0, 1023, 0, 255);
analogWrite(fan, PWMoutput);
}
int reading = digitalRead(button);
buttonState = digitalRead(button);
{
buttonState = reading;
if (buttonState != lastbuttonState){
if (buttonState == HIGH){
forwardState = !forwardState;
}
buttonPushCounter++;
analogWrite(forward, 95);
analogWrite(reverse, 0);
digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
Serial.println(buttonPushCounter);
delay(500); //types 1 on the 7 seg
}}
{
int reading = digitalRead(button);
buttonState = digitalRead(button);
if (buttonState != lastbuttonState){
if (buttonState == HIGH){
forwardState = !forwardState;
}
if (buttonPushCounter == 2);{
analogWrite(forward, 135);
analogWrite(reverse, 0);
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 0);
digitalWrite(8, 1);
Serial.println(buttonPushCounter);
delay(500); //types 2 on the 7 seg
}}
{
int reading = digitalRead(button);
buttonState = digitalRead(button);
if (buttonState != lastbuttonState){
if (buttonState == HIGH){
forwardState = !forwardState;
}
if (buttonPushCounter == 3);{
analogWrite(forward, 175);
analogWrite(reverse, 0);
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 1);
Serial.println(buttonPushCounter);
delay(500); //types 3 on the 7 seg
}}}
{
int reading = digitalRead(button);
buttonState = digitalRead(button);
if (buttonState != lastbuttonState){
if (buttonState == HIGH){
forwardState = !forwardState;
}
if (buttonPushCounter == 4);{
analogWrite(forward, 215);
analogWrite(reverse, 0);
digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
Serial.println(buttonPushCounter);
delay(500); //types 4 on the 7 seg
}}}
{
int reading = digitalRead(button);
buttonState = digitalRead(button);
if (buttonState != lastbuttonState){
if (buttonState == HIGH){
forwardState = !forwardState;
}
if (buttonPushCounter == 5);{
analogWrite(forward, 255);
analogWrite(reverse, 0);
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
Serial.println(buttonPushCounter);
delay(500); //types 5 on the 7 seg
}}}
}
button2State = digitalRead(button2);
if (button2State != lastbutton2State){
if(button2State == HIGH)
analogWrite(forward, 0);
analogWrite(reverse, 0);
delay(50);
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
delay(500); //types n on the 7 seg
}
button2State = digitalRead(button2);
if (button2State != lastbutton2State){
if(button2State == HIGH)
analogWrite(forward, 0);
analogWrite(reverse, 100);
delay(50);
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
delay(500); //types r on the 7 seg
}
}
