Прошу помочь со меной направления на AccelStepper

GRiMmase
Offline
Зарегистрирован: 26.07.2012

 Есть вот такой скеч - результат моего предыдущего топика:

#include <AccelStepper.h>

// Define a stepper and the pins it will use
AccelStepper stepper; // Defaults to 4 pins on 2, 3, 4, 5

int X = 4;

void setup()
{  
    stepper.setMaxSpeed(200); 
    stepper.setAcceleration(50);
    unsigned int step=25600/X;
}

void loop()
{    
    stepper.setCurrentPosition(0);
    for (int i=1; i <= X; i++){
    stepper.runToNewPosition(i*step);
    }
delay (5000);
}

Используя библиотеку AccelStepper, ардуина поворачивает ротор моего ШД на 360 градусов за X шагов (в моем случае за 4-е шага), затем выдерживает паузу и снова поворачивает на Х шагов и так бесконечно.

Сейчас ШД вращается по часовой стрелке, как заставить его вращаться против часовой? 

GRiMmase
Offline
Зарегистрирован: 26.07.2012

 В описании классов на сайте разработчика для этих целей есть setPinsInverted не могу разобраться как применить это к моему скечу.

GRiMmase
Offline
Зарегистрирован: 26.07.2012

Помгло stepper.setPinsInverted(1, 1, 1); но работает странно. Правильно ли все сделал?

 

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

неправильно! Домтаточно поворачмваит на отрицатеотные шаги. Замените i на -i в скобепх

GRiMmase
Offline
Зарегистрирован: 26.07.2012

 AlexFisher и вновь вы меня выручаете, спасибо!

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015

Тоже прошу помощи с этот библиотекой. двигатель крутится но только на указанное количество шагов. использую вот такой скетч.

#include <AccelStepper.h>

// Define two steppers and the pins they will use
AccelStepper stepper1(1, 9, 8);
///AccelStepper stepper2(1, 7, 6);

int pos1 = 3600;
int pos2 = 4800;

void setup()
{  
  stepper1.setMaxSpeed(1500);
  stepper1.setAcceleration(1500);

}

void loop()
{
  if (stepper1.distanceToGo() == 0)
  {
        pos1 = -pos1;
    stepper1.moveTo(pos1);
  }

    stepper1.run();

}

не понимаю как просто заставить мотор крутиться без перерыва в одну сторону.

и прошу растолковать эту строку. AccelStepper stepper1(1, 9, 8); 8 и 9 вроде понятно. а что такое 1 и куда его подключать.

exez
exez аватар
Offline
Зарегистрирован: 04.04.2015
void setup()
{  
  Serial.begin(9600);
  stepper1.setSpeed(3);
  stepper1.setAcceleration(200);

}

void loop()
{
    stepper1.move(1);
    stepper1.run(); 

кручу так. теперь остался последний вопрос как его крутить со скоростью 0.09 оборота в минуту :) не понимаю что означают цифры в скобках.

 

СетСпиид я так понимаю количество шагов в секунду. ускорение более менее понятно. что означает цифра в stepper1.move(1);

 

помогите плиз :)