Ik heb een stappenmotor welke ik 4 keer 90 graden wil laten draaien, en na elke rotatie mijn fototoestel een foto wil laten maken. Ik heb een programma geschreven wat werkt zonder gebruik te maken van de accelstepper bibliotheek. Nu wil ik het zelfde voor elkaar krijgen m et de accelstepper, om acceleratie en deacceleratie te kunnen gebruiken.
Hieronder de code zonder accelstepper en met. Zonder werkt het, met niet. Kunnen jullie me in de goede richting sturen?
#define SHUTTER_PIN 7
#define DIRECTION_PIN 8
#define STEPPER_PIN 9
int TotalShots = 4;
long StepsPerShot = 85924 / TotalShots; // 85924 is the total amound of steps te complete a rotation
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
}
void loop() {
for(int shot = 0; shot < TotalShots; shot++)
{
for(int steps = 0; steps < StepsPerShot; steps++)
{
digitalWrite(STEPPER_PIN, HIGH);
delayMicroseconds(60); // speed of the stepper
digitalWrite(STEPPER_PIN, LOW);
delayMicroseconds(60);
}
delay(1000);
digitalWrite(SHUTTER_PIN, LOW);
delay(2000); // take shot
digitalWrite(SHUTTER_PIN, HIGH);
}
while(true) {} // execution does not proceed past this point
}
Met accelstepper:
#define SHUTTER_PIN 7
#include <AccelStepper.h>
int TotalShots = 4;
long pos = 85924 / TotalShots; // 85924 is the total amound of steps te complete a rotation
AccelStepper stepper(1, 9, 8); // Define a stepper and the pins it will use
void setup() {
stepper.setMaxSpeed(6000);
stepper.setAcceleration(1000);
pinMode(SHUTTER_PIN, OUTPUT);
}
void loop()
{
for(int shot = 0; shot < TotalShots; shot++)
{
{
stepper.setCurrentPosition(0);
stepper.moveTo(pos);
stepper.run();
}
delay(1000);
digitalWrite(SHUTTER_PIN, LOW);
delay(2000); // take shot
digitalWrite(SHUTTER_PIN, HIGH);
}
while(true) {} // execution does not proceed past this point
}