Сначала.Это ни в коем случае не назначение класса.Это моя личная работа и исследования.Я просто хочу избавиться от этого.
Я учусь использовать Matlab в различных проектах Arduino.Я опытный пользователь Matlab, но я довольно плохо знаком со всем пространством Arduino.
Я пытаюсь отправить некоторые числовые данные из Matlab (через графический интерфейс) на мой Arduino Uno и заставить Arduino записать их на мою карту micro SC.Это временный шаг к моему большому проекту.Тем не менее, нет необходимости вдаваться в эти подробности, так как они выходят за рамки моих проблем.
Я вполне уверен, что код Matlab работает и код Arduino немного изменен по сравнению с другим проектом, который я сделал, гдеЯ написал и прочитал случайные числа с моей карты микро 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> // load SD library
int chipSelect = 4; // Chip select pin for the MicroSD Card Adapter
int incomingByte = 0; // for incoming serial data.
File SDF; // Serial data received is saved here.
void setup() {
Serial.begin(115200); // start serial connection to print out debug messages and data
pinMode(chipSelect, OUTPUT); // chip select pin must be set to OUTPUT mode
while (!Serial) {
}
}
void loop() {
// Open file, Write data, Close file only when you receive data
if (Serial.available() > 0) {
incomingByte = Serial.read();
SDF = SD.open("SerialDataFile.txt", FILE_WRITE); // open "SerialDataFile.txt" to write data
SDF.println(incomingByte, DEC); // write ASCII-encoded decimal number to file
SDF.close(); // close file
}
}
Ожидаемым результатом будет сохраненный файл "SerialDataFile.txt"на мою карту micro SD со значением 5.
Спасибо за помощь!