Страница 1 из 1

Помогите с пользовательским блоком

Добавлено: 14 ноя 2019, 17:43
Sanbi4
Здравствуйте все.
Мне нужен блок управления шаговым с драйвером на А4988, управление шагами и направлением по аналоговому сигналу.

нечто подобное реализовано в скетче
[spoiler]
#include <Stepper.h>

#define STEPS 100

Stepper stepper(STEPS, 8, 9, 10, 11);

int previous = 0;

void setup() {

stepper.setSpeed(30);
}

void loop() {

int val = analogRead(0);

stepper.step(val - previous);


previous = val;
}
[/spoiler]

Но это под 4х проводной драйвер на вход, который не хочу использовать. По этому скетчу шаговый работает, как серва от потенциометра, что мне и нужно.
Я так понимаю, что пределы смещения можно сделать на масштабировании. В блоке хочется видеть такую логику:
Включаем блок по EN, шаговик вращается в одну сторону (нужна возможность задать направление вращения), упирается в конечник, от него отчитывает нужное количество шагов (для поиска нулевой точки), а после этой процедуры начинает работать по потенциометру.

можете мне помочь?

Помогите с пользовательским блоком

Добавлено: 15 ноя 2019, 10:56
Ivan_Kornege
Sanbi4 писал(а): 14 ноя 2019, 17:43 Включаем блок по EN, шаговик вращается в одну сторону (нужна возможность задать направление вращения), упирается в конечник, от него отчитывает нужное количество шагов (для поиска нулевой точки), а после этой процедуры начинает работать по потенциометру.
нафига такие сложности , надо делать просто блок управления драйвером мотора а там уже всю логику собираешь на флпрог.

Отправлено спустя 4 минуты 10 секунд:
вот из этого кода

Код: Выделить всё

// простая программа управления шаговым двигателем с помощью библиотеки Stepper
// делает 5 оборотов против часовой стрелки со скоростью 1 оборот в секунду
// после паузы 1 сек, делает 5 оборотов по часовой стрелке

#include <Stepper.h>

  Stepper motor(48, 10, 12, 11, 13);  // объект motor, 48 шагов на оборот 

void setup() {
  motor.setSpeed(60);  // скорость 60 об. в мин.
}

void loop() { 
  motor.step(240);  // 5 оборотов (240 шагов) по часовой стрелке
  delay(1000);
  motor.step(-240);  // 5 оборотов (240 шагов) против часовой стрелке
  delay(1000); 
}
взял отсюда