• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
AccelStepper i zmiana prędkości w locie...
#1
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();
  }
}
 
Odpowiedź
#2
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.
 
Odpowiedź
#3
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
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości