Помогите пожалуйста новичку 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()