Всем привет! Помогите пожалуйста разобраться.
Написал код для изменения скорости шагового двигателя в зависимости от удаленности магнита от датчика хола. Для наглядности выводил вычисляемые значения в монитор порта. Ситуация следующая: все работает, но работает не плавно, а с рывками, мотор дрожит. Так, будто в коде есть небольшой delay(). Стоило закомментить строку, которая выводит значения в монитор, как все начало работать плавно. Объективно, эта строка в последствии и не нужна, но в процессе отладки я не сразу понял в чем проблема, комментил строку наугад. Это нормальное поведение или я что-то сделал не правильно? Можно как-то это обойти? В процессе разработки иногда подглядывать в монитор все-таки бывает нужно.
Код прилагаю.
Написал код для изменения скорости шагового двигателя в зависимости от удаленности магнита от датчика хола. Для наглядности выводил вычисляемые значения в монитор порта. Ситуация следующая: все работает, но работает не плавно, а с рывками, мотор дрожит. Так, будто в коде есть небольшой delay(). Стоило закомментить строку, которая выводит значения в монитор, как все начало работать плавно. Объективно, эта строка в последствии и не нужна, но в процессе отладки я не сразу понял в чем проблема, комментил строку наугад. Это нормальное поведение или я что-то сделал не правильно? Можно как-то это обойти? В процессе разработки иногда подглядывать в монитор все-таки бывает нужно.
Код прилагаю.
C++:
#include "GyverStepper2.h"
GStepper2< STEPPER2WIRE > stepper(200, 3, 2);
int analogPin = A0;
int frequency;
void setup() {
stepper.setAcceleration(400);
stepper.setMaxSpeed(800);
Serial.begin(9600);
}
void loop() {
stepper.tick();
int analogValue = analogRead(analogPin);
frequency = map(analogValue, 334, 517, 0, 800);
Serial.println((String)analogValue + "\t" +(String)frequency);
stepper.setSpeed(frequency);
}