Помогите пожалуйста новичку 28BYJ-48 + UNL2003
- Войдите на сайт для отправки комментариев
Ср, 27/06/2018 - 12:58
Здравствуйте, я хочу сделать так, чтобы при команде "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. Он инициирует работу двигателя, когда это необходимо
}
В сетупе установите, Serial.begin(9600); //Скорость работы порта
У readString() дефолтовый таймаут ~1сек. Т.е. каждый шаг будет осуществляться с паузой минимум 1сек.
Кроме забытой инициализации порта я бы дополнительно рекомендовал проводить считывание с Serial только в том случае, когда в нем что-то есть. См. Serial.available()
Это самый лучшей вариант. Serial.available()