/* Simple Stepper Motor Control Exaple Code
by Dejan Nedelkovski, www.HowToMechatronics.com
*/
// Defines pins numbers
const int stepPin = 4;
const int dirPin = 3;
const int selectDirPin = 9;
int customDelay, customDelayMapped; // Defines variables
bool dirState = LOW;
void setup()
{
// Sets the two pins as Outputs
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
pinMode(selectDirPin, INPUT_PULLUP);
digitalWrite(dirPin, HIGH); //Enables the motor to move in a particular direction
}
void loop()
{
dirState = digitalRead(selectDirPin);
if (dirState == LOW)
{
digitalWrite(dirPin, LOW);
}
else
{
digitalWrite(dirPin, HIGH);
}
customDelayMapped = speedUp(); // Gets custom delay values from the custom speedUp function
// Makes pules with custom delay, depending on the Potentiometer, from which the speed of the motor depends
digitalWrite(stepPin, HIGH);
delayMicroseconds(customDelayMapped);
digitalWrite(stepPin, LOW);
delayMicroseconds(customDelayMapped);
}
// Function for reading the Potentiometer
int speedUp() {
int customDelay = analogRead(A0); // Reads the potentiometer
int newCustom = map(customDelay, 1023, 0, 1, 15000); // Convrests the read values of the potentiometer from 0 to 1023 into desireded delay values (300 to 4000)
return newCustom;
}