Accel Stepper
- Войдите на сайт для отправки комментариев
Пнд, 29/08/2016 - 13:34
Есть задача управлять шаговиком с кнопок.
Т.е. нажал одну кнопку- шаговик вращается в одном направлени пока кнопка нажата.
нажал другую- вращается в обратном направлении.
if ((digitalRead(move_forward) == HIGH)&&Stepper1.distanceToGo()==0)
{
Stepper1.move(300);
delay(100);
}
if ((digitalRead(move_backward) == HIGH)&&Stepper1.distanceToGo()==0)
{
delay(100);
Stepper1.move(300);
}
Stepper1.run();
такой вариант плох тем, что при зажатой кнопке шаговик делает "микрошаги", а при ее отжатии резко доделывает все оставшиеся шаги.
если у кого-то есть описание процедур/функций AccelStepper- поделитесь, пожалуйста.
http://arduino.ru/forum/programmirovanie/klass-titanovyi-velosiped-dlya-...
к сожалению ты не понял вопроса.
нет необходимости считывать события с кнопки.
http://www.airspayce.com/mikem/arduino/AccelStepper/
BUTTON move_forward(30); // кнопка включения/выключения наплавки BUTTON move_backward(31); // кнопка увеличения диаметра наплавки void setup() { move_forward.read(); move_backward.read(); Stepper1.setMaxSpeed(3000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду) Stepper1.setAcceleration(3000); //устанавливаем ускорение (шагов/секунду^2) } void loop() { if (move_forward.click_down ) { Stepper1.move(400); delay(100); } if (move_backward.click_down ) { delay(100); Stepper1.move(400); } Stepper1.run();вообще не реагирует на нажатие кнопок
кнопочки читать нужно в лупе, а не в сетапе, обращение к .read() как бы обновляет показания кнопочек, перенесите из сетапа в луп
Да, немногоим ранее я понял свою ошибку))
Но вопрос в теме остается открытый. Как при нажатой кнопке заставить вращаться шаговик в том или ином направлении пока кнопка не будет отпущена? Т.е. условно, на бесконечное кол-во шагов.
void loop() { if (digitalRead(30)==HIGH) { Stepper1.move(0); Stepper1.run(); Stepper1.moveTo(10000); while(digitalRead(30)!=LOW) { Stepper1.run(); } Stepper1.stop(); } if (digitalRead(31)==HIGH) { Stepper1.move(0); Stepper1.run(); Stepper1.moveTo(0); while(digitalRead(31)!=LOW) { Stepper1.run(); } Stepper1.stop(); } Нашел решение, немного корявое. Может кому пригодиться.