#include <Stepper.h>
// Указываем количество шагов на один оборот
const int stepsPerRevolution = 2048; // для 28BYJ-48 с редуктором
// Подключение к выводам драйвера ULN2003
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
// Параметры подъема
float height = 0.5; // высота подъема в метрах
float timeToLift = 10; // время подъема в секундах
float pulleyRadius = 0.02; // радиус шкива в метрах (например, 2 см)
void setup() {
myStepper.setSpeed(15); // скорость в об/мин (можно подбирать)
Serial.begin(9600);
// Вычисляем длину троса
float ropeLength = height;
// Вычисляем, сколько оборотов нужно сделать
float pulleyCircumference = 2 * 3.1416 * pulleyRadius;
float requiredRotations = ropeLength / pulleyCircumference;
// Вычисляем общее количество шагов
int totalSteps = requiredRotations * stepsPerRevolution;
// Вывод в сериал для отладки
Serial.print("Total steps: "
;
Serial.println(totalSteps);
// Движение мотора
myStepper.step(totalSteps);
}
void loop() {
// ничего не делаем
}
Как оптимизировать данный код ?
// Указываем количество шагов на один оборот
const int stepsPerRevolution = 2048; // для 28BYJ-48 с редуктором
// Подключение к выводам драйвера ULN2003
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);
// Параметры подъема
float height = 0.5; // высота подъема в метрах
float timeToLift = 10; // время подъема в секундах
float pulleyRadius = 0.02; // радиус шкива в метрах (например, 2 см)
void setup() {
myStepper.setSpeed(15); // скорость в об/мин (можно подбирать)
Serial.begin(9600);
// Вычисляем длину троса
float ropeLength = height;
// Вычисляем, сколько оборотов нужно сделать
float pulleyCircumference = 2 * 3.1416 * pulleyRadius;
float requiredRotations = ropeLength / pulleyCircumference;
// Вычисляем общее количество шагов
int totalSteps = requiredRotations * stepsPerRevolution;
// Вывод в сериал для отладки
Serial.print("Total steps: "
Serial.println(totalSteps);
// Движение мотора
myStepper.step(totalSteps);
}
void loop() {
// ничего не делаем
}
Как оптимизировать данный код ?