Обновить examples/MKS42C_Example/MKS42C_Example.ino

This commit is contained in:
ArturKarasevich 2026-04-05 00:11:43 +05:00
parent a829438f2d
commit fac89ddc1c
1 changed files with 19 additions and 17 deletions

View File

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