Обновить examples/MKS42C_Example/MKS42C_Example.ino
This commit is contained in:
parent
a829438f2d
commit
fac89ddc1c
|
|
@ -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("° | Абс. импульсы: ");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue