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

Вопросы от новичков
Ответить
Sanbi4
Рядовой
Сообщения: 76
Зарегистрирован: 30.10.2019{, 17:58}
Репутация: 3
Имя: Сергей

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

#1

Сообщение Sanbi4 » 14.11.2019{, 17:43}

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

нечто подобное реализовано в скетче
СпойлерПоказать
#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;
}
Но это под 4х проводной драйвер на вход, который не хочу использовать. По этому скетчу шаговый работает, как серва от потенциометра, что мне и нужно.
Я так понимаю, что пределы смещения можно сделать на масштабировании. В блоке хочется видеть такую логику:
Включаем блок по EN, шаговик вращается в одну сторону (нужна возможность задать направление вращения), упирается в конечник, от него отчитывает нужное количество шагов (для поиска нулевой точки), а после этой процедуры начинает работать по потенциометру.

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

Аватара пользователя
Ivan_Kornege
Лейтенант
Сообщения: 342
Зарегистрирован: 29.04.2017{, 08:24}
Репутация: 27
Откуда: гАндурас
Имя: Ivan

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

#2

Сообщение Ivan_Kornege » 15.11.2019{, 10:52}

Sanbi4 писал(а):
14.11.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); 
}
взял отсюда

Ответить

Вернуться в «Начинающим»