Здравствуйте все.
Мне нужен блок управления шаговым с драйвером на А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, шаговик вращается в одну сторону (нужна возможность задать направление вращения), упирается в конечник, от него отчитывает нужное количество шагов (для поиска нулевой точки), а после этой процедуры начинает работать по потенциометру.
можете мне помочь?
Помогите с пользовательским блоком
- Ivan_Kornege
- Лейтенант
- Сообщения: 338
- Зарегистрирован: 29 апр 2017, 08:24
- Откуда: гАндурас
- Имя: Ivan
Помогите с пользовательским блоком
нафига такие сложности , надо делать просто блок управления драйвером мотора а там уже всю логику собираешь на флпрог.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);
}
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость