Arduino Polska Forum

Pełna wersja: AccelStepper i zmiana prędkości w locie...
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Cześć

Mam mały zgryz z silnikiem krokowym. Próbuję zastosować bibliotekę AccelStepper
i zmieniać prędkość silnika "w locie". Za grzyba mi to nie wychodzi.
Jakakolwiek próba zmiany powoduje, że silnik kręci się ze swoją ulubioną prędkością
i nie reaguje na zmiany.... Możecie zerknąć w próbny kod? Czy coś robię źle, czy też
ta biblioteka nie pozwala na zmianę prędkości w trakcie pracy?

PWL

Kod:
#include <AccelStepper.h>

#define dirPin 3
#define stepPin 2
#define motorInterfaceType 1

int spid=100;
float czas=0;

AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);

void setup()

  Serial.begin(115200);
  stepper.setMaxSpeed(1000);
}

void loop()

  //Serial.println(czas);
  if (millis()>czas+1000)
  {
    spid+=100;
    if (spid>=1000) { spid=100; }
    Serial.println(spid);
    stepper.setSpeed(spid);
    stepper.runSpeed();
    czas=millis();
  }
}
I tak nieźle, że się kręci. W przykładzie jest stepper.runSpeed(); bezpośrednio w loop, widocznie im częściej jest to wywoływane tym lepiej. No i jaką prędkość osiągnie to zależy od silnika, taki popularny do Arduino to tak gdzieś koło 500 się kończy.
Tak, masz rację! Przegapiłem fakt, że stepper.runSpeed(); musi byc bezpośrednio w loop()i wywoływane
za każdym okrążeniem jak często się da. Poprawiłem i można regulować prędkość zmieniając zmienną.
Dzięki!

PWL