首先。这绝不是类分配。这是我个人的工作和研究。我只是想解决这个问题。
我正在学习如何将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。
谢谢您的帮助!