Just made this change to the code
but now the code runs only once
and the button read is somehow erratic.
#include <Stepper.h>
// Declare the used pins
int dirA = 4;
int dirB = 5;
int pwmA = 2;
int pwmB = 3;
int switchState;
long randNumber;
const int buttonPin = 6;
int counter = 0;
byte lastPressCount;
// Declare a Stepper motor with 200 steps
Stepper stepper1(200, dirA, dirB);
void setup() {
// PWM pins require declaration when used as Digital
pinMode(pwmA, OUTPUT);
pinMode(pwmB, OUTPUT);
// Set PWM pins as always HIGH
digitalWrite(pwmA, HIGH);
digitalWrite(pwmB, HIGH);
Serial.begin(9600);
//Button1
pinMode(buttonPin, INPUT);
digitalWrite(buttonPin, HIGH);
// Set stepper motor speed
//stepper1.setSpeed(3000);
}
void loop(){
randNumber = random(3000, 7000);
//Serial.println(randNumber);
int buttonState;
buttonState = digitalRead(buttonPin);
if (buttonState == LOW)
{
counter++;
delay(250);
}
if (counter == 4) counter = 0;
if (lastPressCount != counter){
Serial.print ("Button press count = "); // out to serial
Serial.println(counter, DEC);
if (counter == 1 or counter == 2 or counter == 3){
// Number of steps for the motors
stepper1.setSpeed(randNumber);
stepper1.step(10000);
// Seconds to wait
delay(10);
stepper1.setSpeed(randNumber);
stepper1.step(-10000);
delay(10);
lastPressCount = counter;
}
else
{
stepper1.step(0);
}
//lastPressCount = counter;
}
}