Помогите пожалуйста новичку 28BYJ-48 + UNL2003

aleksandrovu
Offline
Зарегистрирован: 27.06.2018

Здравствуйте, я хочу сделать так, чтобы при команде "GO" шаговый двигатель 28BYJ-48 крутился по часовой стрелке, а по команде "BACK" крутился в обратном направлении на 90 шагов и там и там. Но когда я вписываю считыватель с монитора порта, то двигатель попросту отказывается работать.

#include <CustomStepper.h>            // Подключаем библиотеку CustomStepper
CustomStepper stepper(2, 3, 4, 5);  // Указываем пины, к которым подключен драйвер шагового двигателя
              // Переменная для смены режимов                
boolean rotate1 = false;              // Переменная для смены режимов
boolean rotatedeg = false;            // Переменная для смены режимов
boolean crotate = false;
void setup()
{
  stepper.setRPM(20);                 // Устанавливаем количество оборотов в минуту
  stepper.setSPR(2048);       // Устанавливаем колочество шагов на полный оборот. Максимальное значение 4075.7728395
}

void loop()
{
  String str = Serial.readString();
  if (str == "GO") 
  if (stepper.isDone() &&  rotate1 == false) 
  {
    stepper.setDirection(CCW);        // Устанавливает направление вращения (по часовой)
    stepper.rotateDegrees(90);             // Устанавливает вращение на заданное количество оборотов
    rotate1 = true;
  }
  if (str == "BACK")
  if (stepper.isDone() && rotate1 == true && rotatedeg == false)
  {
    stepper.setDirection(CW);         // Устанавливает направление вращения (против часовой)
    stepper.rotateDegrees(90);        // Поворачивает вал на заданное кол-во градусов
    rotatedeg = true;
  }
  stepper.run();                      // Этот метод обязателен в блоке loop. Он инициирует работу двигателя, когда это необходимо
}

 

IVAN222
Offline
Зарегистрирован: 19.04.2017

В сетупе установите,  Serial.begin(9600); //Скорость работы порта

sadman41
Offline
Зарегистрирован: 19.10.2016

У readString() дефолтовый таймаут ~1сек. Т.е. каждый шаг будет осуществляться с паузой минимум 1сек. 

Кроме забытой инициализации порта я бы дополнительно рекомендовал проводить считывание с Serial только в том случае, когда в нем что-то есть. См. Serial.available()

IVAN222
Offline
Зарегистрирован: 19.04.2017

Это самый лучшей вариант.  Serial.available()