motor.setSpeed(TARGET_RPM); // RPM -> библиотека сама считает задержку
Serial.println(F("=== Stepper lift demo ===");
Serial.print (F("RPM set to: "); Serial.println(TARGET_RPM);
Serial.print (F("Total steps: "); Serial.println(TOTAL_STEPS);
Как оптимизировать данный код ?Заменить float на int и считать в целых числах. Поскольку слабый микроконтроллер в ардуине float-ы крайне медленно считает
Ваш код уже достаточно хорошо структурирован, но его можно немного оптимизировать для улучшения читаемости и функциональности. Вот несколько рекомендаций по оптимизации:
1. Избегайте дублирования кода: Разбейте задачи на функции для лучшей читаемости.
2. Избавьтесь от магических чисел: Определите константы для чисел, используемых в расчетах.
3. Добавьте комментарии: Убедитесь, что код остается понятным другим разработчикам.
Вот оптимизированная версия вашего кода:
#include <Stepper.h>
// Указываем количество шагов на один оборот
const int stepsPerRevolution = 2048; // для 28BYJ-48 с редуктором
// Параметры подъема
const float height = 0.5; // высота подъема в метрах
const float pulleyRadius = 0.02; // радиус шкива в метрах (например, 2 см)
const float pi = 3.1416; // значение числа Пи
void setup() {
myStepper.setSpeed(15); // скорость в об/мин
Serial.begin(9600);
int totalSteps = calculateSteps(height, pulleyRadius);
// Вывод в сериал для отладки
Serial.print("Total steps: "
Serial.println(totalSteps);
// Движение мотора
myStepper.step(totalSteps);
}
void loop() {
// ничего не делаем
}
// Функция для вычисления общего количества шагов
int calculateSteps(float liftHeight, float radius) {
float ropeLength = liftHeight;
float pulleyCircumference = 2 * pi * radius;
float requiredRotations = ropeLength / pulleyCircumference;
return requiredRotations * stepsPerRevolution;
}
### Изменения и улучшения:
- Функция calculateSteps: Эта функция рассчитывает общее количество шагов, что позволяет изолировать логику вычислений.
- Константы: Добавлен const для pi, чтобы избежать использования "магического числа" при вычислениях.
- Комментарии: Убеждены, что код обеспечивает ясность.
Такие изменения делают код более структурированным и простым для поддержки.