#include <Stepper.h> //подключение библиотеки
const int stepsPerRevolution = 200; //количество шагов на оборот
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); //управление выводами 8 - 11
int stepCount = 0; //количество шагов, которое сделал двигатель
const int StartStopButton = 12;
const int leftButton = 3;
const int rightButton = 2;
int lastStartStopButton = LOW;
int curStartStopButton = LOW;
int lastLeftButton = LOW;
int curLeftButton = LOW;
int lastRightButton = LOW;
int curRightButton = LOW;
bool StartStop = false;
int step = 100;
int debounce(int last, int buttonNum){
int current = digitalRead(buttonNum);
if(last != current){
delay(5);
current = digitalRead(buttonNum);
}
return current;
}
void setup() {
pinMode(StartStopButton, INPUT);
pinMode(leftButton, INPUT);
pinMode(rightButton, INPUT);
}
void loop()
{
curStartStopButton = debounce(lastStartStopButton, StartStopButton);
curLeftButton = debounce(lastLeftButton, leftButton);
curRightButton = debounce(lastRightButton, rightButton);
int sensor = analogRead(A0); // чтение значения потенциометра
int motorSpeed = map(sensor, 0, 1023, 0, 100); // масштабирование этого значения
if(lastStartStopButton == HIGH && curStartStopButton == LOW){
StartStop = !StartStop;
}
lastStartStopButton = curStartStopButton;
if(lastLeftButton == HIGH && curLeftButton == LOW){
step = -100;
}
lastLeftButton = curLeftButton;
if(lastRightButton == HIGH && curRightButton == LOW){
step = 100;
}
lastRightButton = curRightButton;
if(StartStop == true){
if (motorSpeed > 0)
{
myStepper.setSpeed(motorSpeed); //установка нового значения скорости
myStepper.step(stepsPerRevolution / step); // сделать 1/100 полного оборота
}
}
}