Как остановить 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.
1 ответ
Из вашего вопроса не ясно, пытаетесь ли вы получить выполнение в реальном времени без задержек или просто хотите настроить время задержки двигателя из MATLAB. Если последнее, то хорошим способом будет отправка данных задержки (например, числа, представляющего желаемую вами длительность между импульсами) через последовательный порт, который ваша программа Arduino получит и обновит задержку двигателя по желанию. Или, учитывая ограничения ОЗУ, вы можете отправить целую последовательность задержек, которые могут выполняться одна за другой с точной синхронизацией.
- Отправка синусоиды из MATLAB и чтение на Arduino Uno
- Что мне не хватает? Отправка данных из Matlab в Arduino на Micro SD
- Arduino и MatLab с OWI Robotic Arm Edge - Проблема с I2C
- про получение float на матлабе от ATmega32 Avr
- Получение данных от сети 120В 50/60Гц
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
Похоже, вам нужно что-то вроде [GRBL](https://github.com/grbl/grbl). Это автономная программа для платы arduino, которая интерпретирует командный язык и производит скоординированные движения шагового двигателя. Она в основном предназначена для обработки на станках с ЧПУ, но, вероятно, может делать то, что вам нужно., @Connor Wolf