const int pinStep = 5;
const int pinDir = 4;
const int ButtonOn1 = 10;
const int ButtonOn2 = 9;
const int PotenciomData = 1;
const int move_delay = 3;
const int CheckButtonDelay = 15;
int CurrentButtonDelay = 0;
int StepModePins[3] = {8, 7, 6};
const int StepModePinsCount = 3;
int ButtonState = 0;
int ButtonDirection = 0;
bool StepMode[5][3] = {
{ 0, 0, 0},
{ 1, 0, 0},
{ 0, 1, 0},
{ 1, 1, 0},
{ 1, 1, 1} };
const int StepModeSize = 5;
int StepModeIndex = 0;
void setup()
{ pinMode(pinStep, OUTPUT);
pinMode(pinDir, OUTPUT);
for(int i = 0; i < StepModePinsCount; i++)
{
pinMode(StepModePins[i], OUTPUT);
}
pinMode(ButtonOn1, INPUT);
pinMode(ButtonOn2, INPUT);
pinMode(PotenciomData, INPUT);
digitalWrite(pinStep, LOW);
digitalWrite(pinDir, LOW);
}
void loop()
{
if(CurrentButtonDelay >= CheckButtonDelay)
{
CheckButtonState();
CurrentButtonDelay = 0;
}
if(ButtonState == 1)
{
MakeMotorStep();
}
delay(move_delay);
CurrentButtonDelay += move_delay;
}
void MakeMotorStep()
{
digitalWrite(pinStep, HIGH);
digitalWrite(pinStep, LOW);
}
void CheckButtonState()
{
int CurrentButtonState = 0, CurrentButtonDirection = 0, CurrentStepModeIndex = 0;
bool readbuttonparam = digitalRead(ButtonOn1);
if(readbuttonparam)
{
CurrentButtonState = 1;
CurrentButtonDirection = 1;
}
readbuttonparam = digitalRead(ButtonOn2);
if(readbuttonparam)
{
CurrentButtonState = 1;
CurrentButtonDirection = 0;
}
if(ButtonState != CurrentButtonState)
{
ButtonState = CurrentButtonState;
}
if(ButtonDirection != CurrentButtonDirection)
{
ButtonDirection = CurrentButtonDirection;
digitalWrite(pinDir, ButtonDirection);
}
CurrentStepModeIndex = map(analogRead(PotenciomData), 0, 1023, 0, StepModeSize-1);
if(StepModeIndex != CurrentStepModeIndex)
{
StepModeIndex = CurrentStepModeIndex;
for(int i = 0; i < StepModePinsCount; i++)
{
digitalWrite(StepModePins[i], StepMode[StepModeIndex][i]);
}
}
}