Как остановить Arduino на 1 миллисекунду с помощью MATLAB?

Мне удалось подключить MATLAB к моему Uno с помощью этой строки кода: a = arduino('COM4'); через этот пакет: Пакет поддержки Matlab для Arduino.

Сейчас MATLAB — мой основной скрипт, который будет синхронизировать все компоненты [например, Arduino].

Я могу посылать импульсы на свой шаговый двигатель, просто используя:

void loop() {
    digitalWrite(2, HIGH);
    delay(1);
    digitalWrite(2, LOW);
    delay(1);
}

Это работает отлично и заставит двигатель двигаться примерно каждые 2 миллисекунды. Моя проблема в том, что я не могу найти способ создать такую же задержку через интерфейс MATLAB. Я знаю, что в MATLAB есть функция pause(), но когда я настраиваю цикл в MATLAB следующим образом:

a = arduino('COM4');
for m = 1:400
    a.digitalWrite(2, 1);
    pause(0.001);
    a.digitalWrite(2, 0);
    pause(0.001);
end

Каждый шаг занимает НАМНОГО больше времени — около 200 миллисекунд каждый.

Каковы другие варианты создания паузы между цифровыми High / Low, отправляемыми на Arduino? Было бы неплохо, если бы я мог контролировать результат из Matlab через Arduino.

, 👍11

Обсуждение

Похоже, вам нужно что-то вроде [GRBL](https://github.com/grbl/grbl). Это автономная программа для платы arduino, которая интерпретирует командный язык и производит скоординированные движения шагового двигателя. Она в основном предназначена для обработки на станках с ЧПУ, но, вероятно, может делать то, что вам нужно., @Connor Wolf


1 ответ


0

Из вашего вопроса не ясно, пытаетесь ли вы получить выполнение в реальном времени без задержек или просто хотите настроить время задержки двигателя из MATLAB. Если последнее, то хорошим способом будет отправка данных задержки (например, числа, представляющего желаемую вами длительность между импульсами) через последовательный порт, который ваша программа Arduino получит и обновит задержку двигателя по желанию. Или, учитывая ограничения ОЗУ, вы можете отправить целую последовательность задержек, которые могут выполняться одна за другой с точной синхронизацией.

,