Re: Шаговый двигатель в виде поворотного механизма
Здравствуйте! Проекты на ардуино ни когда не писал, но всегда было желание научиться. Подскажите пожалуйста как сделать, что бы в данном проекте, после того как шаговик найдет нулевую позицию, он ждал появления сигнала от кнопки "стоп", после этого передвигался к первой позиции и останавливался, затем снова ждал сигнала от кнопки, после её нажатия переходил к следующей позиции и так двигался до последней позиции затем опять возвращался в нулевую позицию.
Будет ли работать вот так ?
#include <AccelStepper.h>
AccelStepper Stepper1(1, 13, 12); // Использует пин 12 и 13 для dir и step, 1 - режим "external driver" (A4988)
static int buttonPin = 11; // Пин концевика.
static int button2Pin = 10; // Пин кнопки "Стоп".
static bool newZeroPoint = true; // Флаг указывающий, что надо найти сначала нулевую позицию, а потом делать остальное.
void setup()
{
pinMode(buttonPin, INPUT); //
Stepper1.setMaxSpeed(200); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)
Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)
}
void loop()
{
// Поиск начальной позиции.
if (newZeroPoint)
{
if (digitalRead(buttonPin))
{
// Если концевик сработал, то выставляем нуливую позицию и завершаем поиск.
Stepper1.setCurrentPosition(0);
newZeroPoint = false;
} else
{
// Двигаемся влево на один шаг, до тех пор пока не сработает концевик.
if (Stepper1.distanceToGo() == 0) {Stepper1.moveTo(Stepper1.currentPosition() - 1);}
Stepper1.run();
}
}
else
// Обработка кнопки "Стоп".
if (digitalRead(button2Pin))
{
button2Pin = true ; // Ждем нажатия кнопки "Стоп".
}
else
{
Stepper1.moveTo(400); // Позиция №1
Stepper1.runToPosition(); // Ждем пока двигатель не встанет в заданную позицию
}
{
// Обработка кнопки "Стоп".
if (digitalRead(button2Pin))
{
button2Pin = true ; // Ждем нажатия кнопки "Стоп".
}
else
Stepper1.moveTo(800); // Позиция №2