MKS42C/examples/MKS42C_Example/MKS42C_Example.ino

71 lines
2.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "MKS42C.h"
// Используем Serial2 (Пины ESP32: TX=17, RX=16)
// Скорость должна совпадать с настройками в меню мотора!
MKS42C motor(Serial2, 0xE0);
void setup() {
Serial.begin(115200);
Serial2.begin(115200, SERIAL_8N1, 16, 17); // Или 115200, если поменял в меню
delay(2000);
Serial.println("=== Тестирование MKS SERVO42C V1.1.2 ===");
// 1. Включаем удержание вала
motor.setEnable(true);
delay(500);
// 2. Тест rotateDegrees (Поворот на 180 градусов)
Serial.println("Действие: Поворот на 180°");
motor.rotateDegrees(180, 60);
// Ждем завершения движения
while(motor.isBusy()) {
printStatus();
delay(100);
}
Serial.println("Движение 180° завершено.");
delay(2000);
// 3. Тест run (Непрерывное вращение)
Serial.println("Действие: Запуск постоянного вращения (Скорость 40)");
motor.run(0, 40); // 0 - по часовой
unsigned long startTime = millis();
while(millis() - startTime < 5000) { // Крутим 5 секунд
printStatus();
delay(200);
}
// 4. Тест stop
Serial.println("Действие: Остановка!");
motor.stop();
delay(1000);
Serial.println("Тест окончен. Текущая финальная позиция:");
printStatus();
}
void loop() {
// В loop просто мониторим позицию, если крутить вал рукой
static unsigned long lastPrint = 0;
if (millis() - lastPrint > 500) {
printStatus();
lastPrint = millis();
}
}
// Вспомогательная функция для красивого вывода
void printStatus() {
float angle = motor.readPosition();
long absPos = motor.readAbsolutePosition();
if (angle >= 0) { // Если чтение успешно
Serial.print(" > Угол: ");
Serial.print(angle);
Serial.print("° | Абс. импульсы: ");
Serial.println(absPos);
} else {
Serial.println(" > Ошибка чтения данных...");
}
}