Что мне не хватает? Отправка данных из Matlab в Arduino на Micro SD
Прежде всего. Это ни в коем случае не классовое задание. Это моя личная работа и исследование. Я просто хочу избавиться от этого.
Я учусь использовать Matlab с различными проектами Arduino. Я опытный пользователь Matlab, но я новичок во всем пространстве Arduino.
Я пытаюсь отправить некоторые числовые данные из Matlab (через графический интерфейс) на мой Arduino Uno и заставить Arduino записать их на мою карту micro SC. Это временный шаг к моему более масштабному проекту. Однако нет необходимости вдаваться в эти подробности, поскольку они выходят за рамки моих вопросов.
Я вполне уверен, что код Matlab работает, а код Arduino немного изменен из другого проекта, который я делал, где я записывал и считывал случайные числа с моей карты micro SD.
Однако, когда я запускаю код Matlab, Arduino мигает, как будто он получает данные, но после того, как я проверяю карту micro SD, он остается пустым.
Я уверен, что мой Arduino правильно подключен к адаптеру карты micro SD, поскольку он остается таким же, как и в моем предыдущем проекте.
Поэтому я уверен, что мне не хватает чего-то тривиального, чтобы заставить его работать.
Я исследовал несколько веб-сайтов по этой теме, и их методы и мои, похоже, очень хорошо совпадают.
Я вполне уверен, что проблема в условном операторе:
if (Serial.available() > 0) {
Как вы увидите.
Код Matlab приведен ниже:
arduinoCom = serial('COM3', 'BaudRate', 115200);
sendData = 5;
fopen(arduinoCom);
fprintf(arduinoCom,'%i',sendData); %this will send 5 to the arduino
fclose(arduinoCom);
delete(arduinoCom);
Код Arduino выглядит следующим образом:
#include <SD.h> // загружаем SD-библиотеку
int chipSelect = 4; // Контакт выбора чипа для адаптера карты MicroSD
int incomingByte = 0; // для входящих последовательных данных.
File SDF; // Здесь сохраняются полученные последовательные данные.
void setup() {
Serial.begin(115200); // запускаем последовательное соединение для распечатки отладочных сообщений и данных
pinMode(chipSelect, OUTPUT); // вывод выбора чипа должен быть установлен в режим OUTPUT
if (!SD.begin(chipSelect)) { // Инициализируем SD-карту
Serial.println("Could not initialize SD card."); // если возвращаемое значение ложно, что-то пошло не так.
}
while (!Serial) {
}
}
void loop() {
// Открыть файл, записать данные, закрыть файл только при получении данных
if (Serial.available() > 0) {
incomingByte = Serial.read();
SDF = SD.open("SerialDataFile.txt", FILE_WRITE); // открываем «SerialDataFile.txt» для записи данных
SDF.println(incomingByte, DEC); // записываем десятичное число в кодировке ASCII в файл
SDF.close(); // закрываем файл
}
}
Ожидаемым результатом будет файл SerialDataFile.txt, хранящийся на моей карте micro SD со значением 5.
Спасибо за помощь!
@dsmalenb, 👍0
Обсуждение1 ответ
Лучший ответ:
Плата перезагружается при новом USB-соединении с помощью fopen. Подождите 2 секунды между fopen и fprintf в коде Mathlab.
- Отправка синусоиды из MATLAB и чтение на Arduino Uno
- Arduino и MatLab с OWI Robotic Arm Edge - Проблема с I2C
- про получение float на матлабе от ATmega32 Avr
- Получение данных от сети 120В 50/60Гц
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
Комментарии не предназначены для расширенного обсуждения; этот разговор был [перенесен в чат](https://chat.stackexchange.com/rooms/88725/discussion-on-question-by-dsmalenb-what-am-i-missing-send-data-from-matlab- к-а)., @Nick Gammon
Слушайте, это не форум. **Пожалуйста, воздержитесь** от ответа на вопрос или внесения предложений в комментариях. Комментарии под вопросом предназначены для разъяснения любых запутанных частей вопроса и запроса дополнительной информации., @Nick Gammon
*Я не вижу способа проверить этот ответ как полный.* - существует какая-то задержка. Зайдите завтра., @Nick Gammon