diff --git a/examples/MKS42C_Example/MKS42C_Example.ino b/examples/MKS42C_Example/MKS42C_Example.ino index 54079ec..816fd7c 100644 --- a/examples/MKS42C_Example/MKS42C_Example.ino +++ b/examples/MKS42C_Example/MKS42C_Example.ino @@ -1,13 +1,13 @@ #include "MKS42C.h" // Используем Serial2 (Пины ESP32: TX=17, RX=16) -// Скорость должна совпадать с настройками в меню мотора! -MKS42C motor(Serial2, 0xE0); +MKS42C motor(Serial2, 0xE0); void setup() { Serial.begin(115200); - Serial2.begin(115200, SERIAL_8N1, 16, 17); // Или 115200, если поменял в меню - + // Инициализация Serial2 для общения с мотором + Serial2.begin(38400, SERIAL_8N1, 16, 17); + delay(2000); Serial.println("=== Тестирование MKS SERVO42C V1.1.2 ==="); @@ -17,10 +17,10 @@ void setup() { // 2. Тест rotateDegrees (Поворот на 180 градусов) Serial.println("Действие: Поворот на 180°"); - motor.rotateDegrees(180, 60); + motor.rotateDegrees(180, 60); // Ждем завершения движения - while(motor.isBusy()) { + while (motor.isBusy()) { printStatus(); delay(100); } @@ -29,25 +29,26 @@ void setup() { // 3. Тест run (Непрерывное вращение) Serial.println("Действие: Запуск постоянного вращения (Скорость 40)"); - motor.run(0, 40); // 0 - по часовой - + motor.run(0, 40); + unsigned long startTime = millis(); - while(millis() - startTime < 5000) { // Крутим 5 секунд + while (millis() - startTime < 3000) { // Покрутим 3 секунды printStatus(); delay(200); } - // 4. Тест stop + // 4. Остановка перед возвратом Serial.println("Действие: Остановка!"); motor.stop(); - delay(1000); - - Serial.println("Тест окончен. Текущая финальная позиция:"); + delay(1500); printStatus(); + + // Отключаем удержание, если нужно расслабить вал + motor.setEnable(false); } void loop() { - // В loop просто мониторим позицию, если крутить вал рукой + // Мониторинг позиции (если крутить вал рукой, увидим смещение от 0) static unsigned long lastPrint = 0; if (millis() - lastPrint > 500) { printStatus(); @@ -55,12 +56,13 @@ void loop() { } } -// Вспомогательная функция для красивого вывода void printStatus() { float angle = motor.readPosition(); + // Даем небольшую паузу между запросами для стабильности UART + delay(10); long absPos = motor.readAbsolutePosition(); - - if (angle >= 0) { // Если чтение успешно + + if (angle >= 0) { Serial.print(" > Угол: "); Serial.print(angle); Serial.print("° | Абс. импульсы: ");