Страница 1 из 1

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

Добавлено: 12 сен 2018, 14:27
kavladiego
Очень надеюсь на Вашу помощь, господа.
Никак не могу совладать с библиотекой 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();
}

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

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

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

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

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

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