01-02-2022, 22:09
Potrzebuje sterować dwoma silnikami, tak by jeden wykonał "a" kroków a drugi "b". Powinno to być wykonane "n" razy.
Znalazłem przykład na wykorzystanie biblioteki Accelerstepper (kod poniżej), który chciałem dostosować do swoich potrzeb. W oryginale silnik jedzie do przodu i wraca. Próbowałem zlikwidować ten powrót na różne sposoby. Bezskutecznie. Silnik albo się nie ruszał, albo wracał.
Druga kwestia to faktycznie przebyty dystans (w mm). Przy napędzie kołem zębatym (20 zębów) i mikrokroku 1/16 - 2400 kroków powinno odpowiadać 30mm. W rzeczywistości jest prawie 2 razy więcej. Nie wydaje mi się, by miały na to wpływ zastosowane parametry przyspieszenia czy max prędkości. Moje doświadczenie z Arduino, a tym bardziej z bibliotekami jest na razie znikome, dlatego bardzo proszę o pomoc.
#include <AccelStepper.h>
AccelStepper stepper1(1, 7, 6);
AccelStepper stepper2(1, 9, 8);
int poz1 = 2400;
int poz2 = 192;
void setup()
{
stepper1.setMaxSpeed(2000);
stepper1.setAcceleration(100);
stepper2.setMaxSpeed(1000);
stepper2.setAcceleration(100);
}
void loop()
{
if (stepper1.distanceToGo() == 0)
{
poz1 = -poz1;
stepper1.moveTo(poz1);
}
if (stepper2.distanceToGo() == 0)
{
poz2 = -poz2;
stepper2.moveTo(poz2);
}
stepper1.run();
stepper2.run();
}
Znalazłem przykład na wykorzystanie biblioteki Accelerstepper (kod poniżej), który chciałem dostosować do swoich potrzeb. W oryginale silnik jedzie do przodu i wraca. Próbowałem zlikwidować ten powrót na różne sposoby. Bezskutecznie. Silnik albo się nie ruszał, albo wracał.
Druga kwestia to faktycznie przebyty dystans (w mm). Przy napędzie kołem zębatym (20 zębów) i mikrokroku 1/16 - 2400 kroków powinno odpowiadać 30mm. W rzeczywistości jest prawie 2 razy więcej. Nie wydaje mi się, by miały na to wpływ zastosowane parametry przyspieszenia czy max prędkości. Moje doświadczenie z Arduino, a tym bardziej z bibliotekami jest na razie znikome, dlatego bardzo proszę o pomoc.
#include <AccelStepper.h>
AccelStepper stepper1(1, 7, 6);
AccelStepper stepper2(1, 9, 8);
int poz1 = 2400;
int poz2 = 192;
void setup()
{
stepper1.setMaxSpeed(2000);
stepper1.setAcceleration(100);
stepper2.setMaxSpeed(1000);
stepper2.setAcceleration(100);
}
void loop()
{
if (stepper1.distanceToGo() == 0)
{
poz1 = -poz1;
stepper1.moveTo(poz1);
}
if (stepper2.distanceToGo() == 0)
{
poz2 = -poz2;
stepper2.moveTo(poz2);
}
stepper1.run();
stepper2.run();
}