Есть рабочий скетч отлаженный для уно но при переносе на нано двигать начинает вращаться без участия кнопок
Описание алгоритма работы:
Скорость вращения 600 оборотов в минуту
При кратковременном нажатии кнопки мотор включается и двигается по часовой стрелке пока не сработает концевой датчик и мотор останавливается. Когда кнопку нажимают ещё раз мотор движется против часовой до второго концевого выключателя до его срабатывания отключается до следующего нажатия кнопки
Вот сам скетч с комментариями:
`#include <AccelStepper.h>`
`// Настройка шагового двигателя`
`// #define ENABLE_PIN 7`
`#define STEP_PIN 8`
`#define DIR_PIN 9`
`// Пины для кнопки и концевых датчиков`
`#define BUTTON_PIN 2`
`#define LIMIT_SWITCH_CW_PIN 3 // по часовой`
`#define LIMIT_SWITCH_CCW_PIN 4 // против часовой`
`// Настройки`
`#define STEPS_PER_REVOLUTION 200 // Шагов на оборот для NEMA 17`
`#define RPM 600 // Скорость в оборотах в минуту`
`#define STEPS_PER_MINUTE (STEPS_PER_REVOLUTION * RPM)`
`#define MOTOR_SPEED 600 // Скорость в шагов в секунду`
`AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);`
`// int counter = 0;`
`// int last_button_state = HIGH;`
`// int curr_button_state = HIGH;`
`volatile bool motorEnabled = true; // Флаг активности двигателя`
`volatile bool motorDirection = true; // Направление движения: true - по часовой, false - против часовой`
`void setup() {`
` // Настройка пинов`
` pinMode(BUTTON_PIN, INPUT_PULLUP);`
` pinMode(LIMIT_SWITCH_CW_PIN, INPUT_PULLUP);`
` pinMode(LIMIT_SWITCH_CCW_PIN, INPUT_PULLUP);`
` // pinMode(ENABLE_PIN, OUTPUT);`
` // digitalWrite(ENABLE_PIN, LOW);`
` // Настройка шагового двигателя`
` stepper.setMaxSpeed(MOTOR_SPEED);`
` stepper.setAcceleration(1000); `
` // Установка прерывания для кнопки`
` attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), toggleMotor, FALLING);`
`}`
`void loop() {`
` // Если мотор включен, двигаться`
` if (motorEnabled) {`
` if (motorDirection) {`
` if (digitalRead(LIMIT_SWITCH_CW_PIN) == LOW) {`
` // Остановить мотор при достижении концевого выключателя`
` motorEnabled = false;`
` stepper.stop();`
` motorDirection = false;`
` } else {`
` stepper.setSpeed(MOTOR_SPEED);`
` stepper.runSpeed();`
` }`
` } else {`
` if (digitalRead(LIMIT_SWITCH_CCW_PIN) == LOW) {`
` // Остановить мотор при достижении концевого выключателя`
` motorEnabled = false;`
` stepper.stop();`
` motorDirection = true;`
` } else {`
` stepper.setSpeed(-MOTOR_SPEED);`
` stepper.runSpeed();`
` }`
` }`
` }`
`}`
`void toggleMotor() {`
` // Переключение состояния мотора и направление`
` motorEnabled = true;`
` // motorEnabled = !motorEnabled;`
` // if (motorEnabled) {`
` // motorDirection = !motorDirection; // Переключить направление при каждом нажатии кнопки`
` // }`
`}`
Прошу помочь разобраться что не так