Зовут Антон. Делаю стрелочный тахометр на шаговом двигателе (шаговик Sonceboz 6405R407 (даташит), плата Arduino Mega 2560) для игры-автосимулятора. Так вот, пока отлаживаю, накидывая на ардуину преобразованные в количество шагов значения оборотов. Что-то получается, но проблема в том, что при малых изменениях значений оборотов стрелка дрыгается, шаговик издаёт страшные звуки и всё такое нехорошее. Уже перепробовал кучу библиотек для шаговиков, миллиард раз переписывал код, но так ничего и не получилось. Наиболее адекватно работал самый примитивный код со стандартной библиотекой для шаговиков, а именно:
C++:
#include <Stepper.h>
Stepper stepper(600, 31, 33, 35, 37);
int currentPos = 0;
int targetPos = 0;
String inData = "";
void setup() {
Serial.begin(115200);
stepper.setSpeed(15);
}
void loop() {
if((currentPos != targetPos) && (currentPos < targetPos)) {
stepper.step(1);
currentPos++;
}
if((currentPos != targetPos) && (currentPos > targetPos)) {
stepper.step(-1);
currentPos--;
}
}
void serialEvent() {
while(Serial.available() > 0) {
char recieved = Serial.read();
if(recieved == '\n') {
targetPos = inData.toInt();
Serial.println(targetPos);
inData = "";
}
else {
inData += recieved;
}
}
}
Уже голову сломал, ничё не получается, я уже отчаялся. Корявенько объяснил проблему, надеюсь поймёт кто.
Может подскажет кто, как это можно реализовать? Или накидает небольшой кодец для примера?