首页 > 解决方案 > 我错过了什么?将数据从 Matlab 发送到 Arduino 到 Micro SD

问题描述

首先关。这绝不是课堂作业。这是我个人的工作和研究。我只是想摆脱它。

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

我正在尝试将一些数值数据从 Matlab(通过 GUI)发送到我的 Arduino Uno,并让 Arduino 将其写入我的微型 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
           }
}  

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

谢谢您的帮助!

标签: matlabarduino-uno

解决方案


推荐阅读