Teď se po zapnutí motor otočí o 1/4 otáčky na opačnou stranu než potom správně běží. Netuším, proč to dělá ani jak to odstranit. Zapojení je klasické s NANO a A4988.
Potřeboval bych aby po zapnutí motor stál a čekal na jednostlivé pulsy, tak aby film nakrokoval do správné pozice proti okénku. A potom se spustilo automatické otáčení. V programu je výstup na BLT, což je ovládání spouště fotoaparátu přes Bluetooth.
Moh by mi někdo poradit, jak dál?
Kód: Vybrat vše
#include <Arduino.h>
#include "A4988.h"
int Step = 3; //GPIO3 in Arduino UNO --- Step of stepper motor driver
int Dire = 2; //GPIO2 in Arduino UNO --- Direction of stepper motor driver
int Sleep = 4; //GPIO4 in Arduino UNO --- Control Sleep Mode on A4988
int MS1 = 7; //GPIO7 in Arduino UNO --- MS1 for A4988
int MS2 = 6; //GPIO6 in Arduino UNO --- MS2 for A4988
int MS3 = 5; //GPIO5 in Arduino UNO --- MS3 for A4988
int BLT_pin = 8;
//Motor Specs
const int spr = 200; //Steps per revolution
int RPM = 30; //Motor Speed in revolutions per minute
int Microsteps = 8; //Stepsize (1 for full steps, 2 for half steps, 4 for quarter steps, etc)
//Providing parameters for motor control
A4988 stepper(spr, Dire, Step, MS1, MS2, MS3);
void setup() {
pinMode(BLT_pin, OUTPUT);
Serial.begin(9600);
pinMode(Step, OUTPUT); //Step pin as output
pinMode(Dire, OUTPUT); //Direcction pin as output
pinMode(Sleep, OUTPUT); //Set Sleep OUTPUT Control button as output
digitalWrite(Step, LOW); // Currently no stepper motor movement
digitalWrite(Dire, LOW);
digitalWrite(Sleep, HIGH); //A logic high allows normal operation of the A4988 by removing from sleep
delay(5000);//Wait 1000 milliseconds (1 second) proceeding
// Set target motor RPM to and microstepping setting
stepper.begin(RPM, Microsteps);
}
void loop() {
digitalWrite(Sleep, HIGH); //A logic high allows normal operation of the A4988 by removing from sleep
stepper.move(200);//Move 200 steps clockwise
digitalWrite(Sleep, LOW);
delay(1000);//Wait 1000 milliseconds
digitalWrite(BLT_pin, HIGH);
delay(200);//Wait 1000 milliseconds
digitalWrite(BLT_pin, LOW);
delay(1000);//Wait 1000 milliseconds
}