float maxVoltage = 13;
float voltage = 2.5;
float value = 0;
int i = 50;
int buttonPin = 2;
int potPin = A0;
int steps = 0;
int ST;
//DEBOUNCE VARIABLES
int antiReboundTime = 100;
int counter = 0; //Variable to increment the counter
boolean lastState = LOW; // Last state of the button
boolean currentState = LOW; // Current state of the button
void setup() {
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
Serial.begin(9600);
}
boolean debounce(boolean last) // Call anti-rebound function
{
boolean current = digitalRead(buttonPin);
if (last != current)
{
current = digitalRead(buttonPin);
}
return current;
}
void loop() {
//VOLTAGE CONVERSION
value = (voltage * 255) / maxVoltage;
//VELOCITY
ST = analogRead(potPin);
ST = map(ST,0,1023,10,300);
Serial.println(ST);
//DEBOUNCE / SET DIRECTION
currentState = debounce(lastState); // Eliminates rebound
if ( lastState == LOW && currentState == HIGH)
{
counter = counter + 1; //Increments counter
Serial.println(counter); //Prints the value on Serial monitor
}
lastState = currentState; // Update the state
if (counter == 0) {
stepperVoltageControlClockWise(value, ST, 9, 6, 5, 3);
}
else if (counter == 1) {
stepperVoltageControlAntiClockWise(value, ST, 9, 6, 5, 3);
}
if (counter > 1) {
counter = 0;
}
}
void stepperVoltageControlClockWise(float value,int ST , int motorPin1, int motorPin2,
int motorPin3, int motorPin4) {
analogWrite(motorPin1, value);
analogWrite(motorPin2, 0);
analogWrite(motorPin3, value);
analogWrite(motorPin4, 0);
delay(ST);
analogWrite(motorPin1, 0);
analogWrite(motorPin2, value);
analogWrite(motorPin3, value);
analogWrite(motorPin4, 0);
delay(ST);
analogWrite(motorPin1, 0);
analogWrite(motorPin2, value);
analogWrite(motorPin3, 0);
analogWrite(motorPin4, value);
delay(ST);
analogWrite(motorPin1, value);
analogWrite(motorPin2, 0);
analogWrite(motorPin3, 0);
analogWrite(motorPin4, value);
delay(ST);
}
void stepperVoltageControlAntiClockWise(float value,int ST , int motorPin1, int motorPin2,
int motorPin3, int motorPin4) {
analogWrite(motorPin1, value);
analogWrite(motorPin2, 0);
analogWrite(motorPin3, 0);
analogWrite(motorPin4, value);
delay(ST);
analogWrite(motorPin1, 0);
analogWrite(motorPin2, value);
analogWrite(motorPin3, 0);
analogWrite(motorPin4, value);
delay(ST);
analogWrite(motorPin1, 0);
analogWrite(motorPin2, value);
analogWrite(motorPin3, value);
analogWrite(motorPin4, 0);
delay(ST);
analogWrite(motorPin1, value);
analogWrite(motorPin2, 0);
analogWrite(motorPin3, value);
analogWrite(motorPin4, 0);
delay(ST);
}