Здравствуйте.
Билиотека Stepper.h c этим двигателем работает некорректно.
В приведенном скетче пытаюсь создать класс MOTORS
для управления 28BYJ-48.
Метод mkstep
поворачивает двигатель на один шаг. Направление задается параметром arrow2
(строка 80).
Скетч рабочий.
Прошу помощи в доработке конструктора класса, если он здесь имеется.
В конструкторе четыре пина (2,3,4,5) должны настроится на выход. Это строки 8-11;
Чтобы эти пины были видны в методе mkstep
(строка 17), созданы строки 12-15.
Спасибо.
class MOTORS
{
private:
int pin11, pin22, pin33, pin44;
public:
MOTORS(int pin1, int pin2, int pin3, int pin4)
{
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
pin11 = pin1;
pin22 = pin2;
pin33 = pin3;
pin44 = pin4;
}
void mkstep(bool arrow)
{
static unsigned long moment2;
while (millis() - moment2 < 2)
{
}
moment2 = millis();
static byte array1[] = {1, 0, 0, 1};
static byte array2[] = {1, 1, 0, 0};
static byte array3[] = {0, 1, 1, 0};
static byte array4[] = {0, 0, 1, 1};
static byte uk;
digitalWrite(pin11, array1[uk]);
digitalWrite(pin22, array2[uk]);
digitalWrite(pin33, array3[uk]);
digitalWrite(pin44, array4[uk]);
if (arrow == true)
{
switch (uk)
{
case 0: uk = 3;
break;
case 1: uk = 0;
break;
case 2: uk = 1;
break;
case 3: uk = 2;
break;
}
}
else
{
switch (uk)
{
case 0: uk = 1;
break;
case 1: uk = 2;
break;
case 2: uk = 3;
break;
case 3: uk = 0;
break;
}
}
}
};
// подключение шагового двигателя
#define IN1 2
#define IN2 3
#define IN3 4
#define IN4 5
MOTORS Stmt(IN1, IN2, IN3, IN4);
byte arrow2;
void setup()
{
}
void loop()
{
Stmt.mkstep(arrow2);
}