我想念什么?将数据从Matlab发送到Arduino到Micro SD

时间:2019-01-21 02:31:05

标签: matlab arduino-uno

首先。这绝不是类分配。这是我个人的工作和研究。我只是想解决这个问题。

我正在学习如何将Matlab与各种Arduino项目一起使用。我是Matlab的经验丰富的用户,但是我对整个Arduino领域还很陌生。

我正在尝试从Matlab(通过GUI)向我的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> // 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
           }
}  

预期结果将是存储在我的微型SD卡中的文件“ SerialDataFile.txt”,其值为5。

谢谢您的帮助!

0 个答案:

没有答案