Пробую освоить управление шаговым двигателем, но вместо вращения вал двигателя немного дребезжит и остаётся на месте. Можете подсказать в чем ошибки в скетче? Драйвера шагового двигателя пока нет, но т.к. есть драйвер управления коллекторным мотором на основе MX1805, то решил через него осваивать пока. Знаю что у Алекса есть библиотека, но делаю для понимания работы. У движка обмотки проверены.
C++:
#include <Arduino.h>
#define pause 3000 // задержка между шагами (мкс)
int8_t pins[] = {3, 4, 5, 6}; // драйвер (IN1 - A+, IN2 - A-, IN3 - B+, IN4 - B-)
int feedAmount = 1000;
// выключаем ток на мотор
void disableMotor() {
for (byte i = 0; i < 4; i++) digitalWrite(pins[i], 0);
}
// Состояние пинов на каждом шаге {IN1, IN2, IN3, IN4}
int8_t t1[]={0,1,1,0};
int8_t t2[]={1,0,1,0};
int8_t t3[]={0,1,0,1};
int8_t t4[]={0,1,0,1};
void step1(){
for(byte i = 0; i < 4; i++) {
digitalWrite(pins[i],t1[i]);
delayMicroseconds(pause);
}
}
void step2(){
for(byte i = 0; i < 4; i++) {
digitalWrite(pins[i],t2[i]);
delayMicroseconds(pause);
}
}
void step3(){
for(byte i = 0; i < 4; i++) {
digitalWrite(pins[i],t3[i]);
delayMicroseconds(pause);
}
}
void step4(){
for(byte i = 0; i < 4; i++) {
digitalWrite(pins[i],t4[i]);
delayMicroseconds(pause);
}
}
void setup() {
for (byte i = 0; i < 4; i++) pinMode(pins[i], OUTPUT);
}
void loop() {
step1();
step2();
step3();
step4();
}