StepDirDriver кнопка обратного движения

Вопросы программирования в системе Ардуино
kavladiego
Сообщения: 2
Зарегистрирован: 12 сен 2018, 14:12

StepDirDriver кнопка обратного движения

Сообщение kavladiego » 12 сен 2018, 14:27

Очень надеюсь на Вашу помощь, господа.
Никак не могу совладать с библиотекой StepDirDriver.
Попытка сменить направление движения шаговика по нажатию кнопки приводит лишь к дикой вибрации оного, помогите советом, ну а в идеальном варианте примером. Прошу сильно не ругать, так как только постигаю возможности Arduino.

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

#include <StepDirDriver.h>
#include <TimerOne.h>

StepDirDriver myMotor(10, 11, 12);

int out = 5;
int in = 3;
byte md;

void setup()
{
  pinMode(out, OUTPUT);
  pinMode(in, INPUT);
  Timer1.initialize(250);
  Timer1.attachInterrupt(timerInterrupt, 250);
 
  myMotor.setMode(0, false);
  myMotor.setDivider(1);
  md = 0;
  myMotor.step(0);
}

void loop()
{
  digitalWrite(out, HIGH);
  int val = digitalRead(in);
  if (md ==0) {
    if (val == LOW) {md=2; myMotor.step(100);}
  }
    else if (md ==2) {
      if (val == HIGH) {md=0; myMotor.step(-100);}
    }
}
void timerInterrupt()
{
 myMotor.control();
}


Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: StepDirDriver кнопка обратного движения

Сообщение Эдуард » 12 сен 2018, 20:11

Здравствуйте!
Попробуйте уменьшить скорость вращения. У вас максимальная стоит: myMotor.setDivider(1);
Скорее всего двигатель выходит из синхронизма. Надо увеличить параметр, например, myMotor.setDivider(20);
И дребезг кнопки неплохо убрать.

kavladiego
Сообщения: 2
Зарегистрирован: 12 сен 2018, 14:12

Re: StepDirDriver кнопка обратного движения

Сообщение kavladiego » 14 сен 2018, 16:30

Эдуард, спасибо, большое. Не думал, что дребезг может так повлиять, аппаратно устранил его через резистор и конденсатор на 1µF. Не использовал программный так как в коде используется таймер, прав ли я в своих суждениях? Еще раз спасибо за помощь!

Эдуард
Администратор
Сообщения: 484
Зарегистрирован: 30 окт 2016, 20:53

Re: StepDirDriver кнопка обратного движения

Сообщение Эдуард » 14 сен 2018, 21:46

Здравствуйте!
Дребезг надежнее устранять программно. Можете использовать библиотеку Button.h (урок 9). Она работает в фоновом режиме в прерывании по таймеру.


Вернуться в «Программирование Ардуино»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей