Обратное вращение шагового двигателя

У меня есть шаговый двигатель, подключенный к моему Arduino с помощью массива Дарлингтона ULN2003A:

Принципиальная схема
Изображение (игнорируйте потенциометр)

И я запрограммировал его с помощью следующего кода:

#include <Stepper.h>

int in1Pin = 22;
int in2Pin = 23;
int in3Pin = 24;
int in4Pin = 25;

Stepper motor(512, in1Pin, in2Pin, in3Pin, in4Pin);

void setup()
{
    pinMode(in1Pin, OUTPUT);
    pinMode(in2Pin, OUTPUT);
    pinMode(in3Pin, OUTPUT);
    pinMode(in4Pin, OUTPUT);

    motor.setSpeed(25);
}

void loop()
{
    int steps = 360;

    motor.step(steps);
    delay(500);
}

В данный момент двигатель вращается по часовой стрелке, как я могу заставить его вращаться в противоположном направлении?

Мой код был скопирован и отредактирован здесь.


Проблема заключалась в том, что два средних провода были расположены неправильно, как сказано здесь: http://forum.arduino.cc/index.php?PHPSESSID=kvi8dt2b5en5hhk02dlmjrotl5&topic=143276.msg‌​

, 👍4


1 ответ


Лучший ответ:

2

Ответ прост. Просто передайте отрицательное количество шагов в качестве аргумента функции motor.step();.

Еще одно примечание: вы забыли поставить точку с запятой в предпоследней строке. IIRC это не имеет значения в C, но это просто плохая практика. Если вы добавите строку кода ниже этого, это не будет работать.

Пример кода:

#include <Stepper.h>

int in1Pin = 22;
int in2Pin = 23;
int in3Pin = 24;
int in4Pin = 25;

Stepper motor(512, in1Pin, in2Pin, in3Pin, in4Pin);

void setup()
{
    pinMode(in1Pin, OUTPUT);
    pinMode(in2Pin, OUTPUT);
    pinMode(in3Pin, OUTPUT);
    pinMode(in4Pin, OUTPUT);

    motor.setSpeed(25);
}

void loop()
{
    int steps = 360;
    motor.step(steps);
    delay(100);

    steps = -360;
    motor.step(steps);
    delay(500); //Добавлена точка с запятой
}
,

Спасибо за точку с запятой, я торопливо копировал свой код. Кроме того, я попробовал отрицательное количество шагов, но это не сработало., @Beta Decay

@user12321 user12321 Я не совсем уверен. Он компилируется? [На этой странице сказано, что отрицательное число пойдет в другую сторону.](http://arduino.cc/en/Reference/StepperStep) Все, что я могу сказать, это убедиться, что вы правильно скопировали весь код. Я не могу понять, что значит «не работает»., @Anonymous Penguin

Ну, он компилируется и запускается, но продолжает вращаться в том же направлении., @Beta Decay

Я нашел решение здесь: forum.arduino.cc/index.php?PHPSESSID=kvi8dt2b5en5hhk02dlmjrotl5&topic=143276.msg109779#msg109779. У меня провода были перепутаны., @Beta Decay

@user Тогда негатив работает?, @Anonymous Penguin

Да, это работает как мечта!, @Beta Decay