#include <Stepper.h> //подключение библиотеки
int motorSpeed = 100; // масштабирование этого значения
const int stepsPerRevolution = 200; //количество шагов на оборот
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); //управление выводами 8 - 11
int stepCount = 0; //количество шагов, которое сделал двигатель
volatile bool startStopButtonPressed = false;
volatile bool directionButtonPressed = false;
const int pinButtonStart = 2;
const int pinButtonDirection = 3;
void startStopButtonISR() {
startStopButtonPressed = !startStopButtonPressed;
}
void directionButtonISR() {
directionButtonPressed = !directionButtonPressed;
}
void setup()
{
pinMode(pinButtonStart, INPUT_PULLUP); // подтягивающий резистор на входе прерывания
attachInterrupt(0, startStopButtonISR, FALLING); //разрешение внешнего прерывания (вывод 2 Arduino UNO)
pinMode(pinButtonDirection, INPUT_PULLUP); // подтягивающий резистор на входе прерывания
attachInterrupt(1, directionButtonISR, FALLING); //разрешение внешнего прерывания (вывод 2 Arduino UNO)
}
void loop()
{
if (startStopButtonPressed)
{
if (directionButtonPressed)
{
myStepper.step(stepsPerRevolution / 100); // сделать 1/100 полного оборота
}
else
{
myStepper.step(-stepsPerRevolution / 100); // сделать 1/100 полного оборота
}
myStepper.setSpeed(motorSpeed); //установка нового значения скорости
}
}