Помогите пожалуйста новичку 28BYJ-48 + UNL2003 + AccelStepper.h
- Войдите на сайт для отправки комментариев
Помогите пожалуйста новичку-ардуинщику. arduino pro mini 168 5v + UNL2003 + 28BYJ-48 5v
Не могу разобраться как заставить шаговик вращаться в заданом направлнии на заданое растояние, потом ждать определенное время ,затем снова вращаться но уже в противоположном направлении на заданое растояние.
В интернете нарыл что для коректной работы UNL2003+28BYJ-48 нужно использовать библиотеку AccelStepper.h
вот код которий я нарыл. здесь шаговик делает четверть оборота, останавливаеться и вращаеться в обратную сторону:
#include<AccelStepper.h>
#define HALFSTEP 8
// Определение пинов для управления двигателем
#define motorPin1 8 // IN1 на 1-м драйвере ULN2003
#define motorPin2 9 // IN2 на 1-м драйвере ULN2003
#define motorPin3 10 // IN3 на 1-м драйвере ULN2003
#define motorPin4 11 // IN4 на 1-м драйвере ULN2003
// Инициализируемся с последовательностью выводов IN1-IN3-IN2-IN4
// для использования AccelStepper с 28BYJ-48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
void setup(){
// Задаём максимальную скорость двигателя
stepper1.setMaxSpeed(1000.0);
// Задаём ускорение двигателя
stepper1.setAcceleration(100.0);
// Установим скорость в шагах за секунду
stepper1.setSpeed(200);
// Перемещаем в абсолютно указанное положение
stepper1.moveTo(360);
}
void loop(){
// Изменяем направление, если шаговик достигает заданного положения
if(stepper1.distanceToGo()==0)
stepper1.moveTo(-stepper1.currentPosition());
stepper1.run();
}нужно сделать чтоб шаговик после первого вращения остановился и ждал какое-то время, затем продолжал вращатся в обратную сторону. Любые попытки сделать остановку через delay(2000); приводят только к замедлению вращения двигателя.
Буду очень признателен за помощ.
Любые попытки сделать остановку через delay(2000); приводят только к замедлению вращения двигателя.
И где эти "любые попытки"? Показывайте, что ВЫ сделали, а не скачанный скетч.
void loop(){ // Изменяем направление, если шаговик достигает заданного положения if(stepper1.distanceToGo()==0) stepper1.moveTo(-stepper1.currentPosition()); stepper1.run(); delay(2000); }двигатель,очень медленно растручиваеться ето видно и по індикаторам фаз на драйвере
void loop(){ // Изменяем направление, если шаговик достигает заданного положения if(stepper1.distanceToGo()==0) stepper1.moveTo(-stepper1.currentPosition()); delay(2000); stepper1.run(); }то же самое
void loop(){ // Изменяем направление, если шаговик достигает заданного положения if(stepper1.distanceToGo()==0) delay(2000); stepper1.moveTo(-stepper1.currentPosition()); stepper1.run(); }здесь двигатель воопще не работает(не горят светодиоды на драйвере)
решил.
#include<AccelStepper.h> #define HALFSTEP 8 #define motorPin1 8 #define motorPin2 9 #define motorPin3 10 #define motorPin4 11 AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4); void setup(){ stepper1.setMaxSpeed(1000.0); stepper1.setAcceleration(100.0); } void loop(){ stepper1.runToNewPosition(1000); delay (3000); stepper1.runToNewPosition(0); delay (3000); }Я не работал с данной библиотекой, но попробуйте так
void loop() { stepper.runToNewPosition(0); delay(2000); stepper.runToNewPosition(500); delay(2000); stepper.runToNewPosition(100); delay(2000); stepper.runToNewPosition(120); delay(2000); }void loop(){ // Изменяем направление, если шаговик достигает заданного положения if(stepper1.distanceToGo()==0) stepper1.moveTo(-stepper1.currentPosition()); stepper1.run(); delay(2000); }двигатель,очень медленно растручиваеться ето видно и по індикаторам фаз на драйвере
void loop(){ // Изменяем направление, если шаговик достигает заданного положения if(stepper1.distanceToGo()==0) stepper1.moveTo(-stepper1.currentPosition()); delay(2000); stepper1.run(); }то же самое
void loop(){ // Изменяем направление, если шаговик достигает заданного положения if(stepper1.distanceToGo()==0) delay(2000); stepper1.moveTo(-stepper1.currentPosition()); stepper1.run(); }здесь двигатель воопще не работает(не горят светодиоды на драйвере)
Хорошо, что решил, только Вы не решили проблему. Вы методом тыка заставили её хоть как-то сработать. Чуть новая задача и у Вас опять беда.
А проблема Ваша в том, что Вы совершенно не знаете языка. Например, понятия не имеете для чего нужны фигурные скобки и как их использовать.
Почитайте что-ибудь по языку, иначе эта проблема будет возвращаться с "каждой новой строчкой кода".