#include <Stepper.h> //подключение библиотеки
const int stepsPerRevolution = 200; //количество шагов на оборот
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
const int buttonStart = 5; //кнопка Start/Stop подключена к контакту 5
int lastButtonStart = LOW; //предыдущее состояние кнопки
int curButtonStart = LOW; //Текущее состояние кнопки
const int buttonLeft = 3; //кнопка "Поворот в лево" подключена к контакту 3
int lastButtonLeft = LOW; //предыдущее состояние кнопки
int curButtonLeft = LOW; //Текущее состояние кнопки
const int buttonRight = 2; //кнопка "Поворот в право" подключена к контакту 2
int lastButtonRight = LOW; //предыдущее состояние кнопки
int curButtonRight = LOW; //Текущее состояние кнопки
bool engineMove = false;//Переменная для запуска двигателя
bool moveLeft = false;//Переменная для задания стороны вращения двигателя
//Функция подавления дребезга контактов
int debounce (const int button, int last)
{
int current = digitalRead(button);
if(last != current) //если состояние изменилось
{
delay(5);
current = digitalRead(button);
}
return current;
}
void setup()
{
pinMode(buttonStart, INPUT);
digitalWrite(buttonStart, HIGH);
pinMode(buttonLeft, INPUT);
digitalWrite(buttonLeft, HIGH);
pinMode(buttonRight, INPUT);
digitalWrite(buttonRight, HIGH);
}
void loop()
{
int sensor = analogRead(A0); // чтение значения потенциометра
int motorSpeed = map(sensor, 0, 1023, 5, 200);//Перевод данных потенциометра
curButtonRight = debounce (buttonRight, lastButtonRight);
if(lastButtonRight == HIGH && curButtonRight == LOW) //условие нажатия
{
moveLeft = false;
}
lastButtonRight = curButtonRight;
curButtonLeft = debounce (buttonLeft, lastButtonLeft);
if(lastButtonLeft == HIGH && curButtonLeft == LOW) //условие нажатия
{
moveLeft = true;
}
lastButtonLeft = curButtonLeft;
curButtonStart = debounce (buttonStart, lastButtonStart);
if(lastButtonStart == HIGH && curButtonStart == LOW) //условие нажатия
{
engineMove = !engineMove;
}
lastButtonStart = curButtonStart;
if (engineMove){
if (moveLeft)
{
myStepper.setSpeed(motorSpeed); //установка нового значения скорости
myStepper.step(-stepsPerRevolution/100);
} else {
myStepper.setSpeed(motorSpeed); //установка нового значения скорости
myStepper.step(stepsPerRevolution/100);
}
}
}