全部。
我尝试将数据从mpu9255写入SD卡,但总是显示“无法打开文件进行写入”。我检查了所有接线,看起来没问题,并且可以读取mpu9255的数据。有谁知道解决办法吗
这是代码:
#include <MPU9255.h> // Include MPU9255 library
#include "FS.h"
#include "SD.h"
#include <SPI.h>
MPU9255 mpu; // Create MPU9255 object
#define SD_CS 5 // Chip select pin for the SD card
void setup() {
Serial.begin(115200);
if (!mpu.init()) {
Serial.println("MPU9255 initialization successful!");
} else {
Serial.println("MPU9255 initialization failed!");
return;
}
if (!SD.begin(SD_CS)) {
Serial.println("Card Mount Failed");
return;
} else {
Serial.println("SD card initialized.");
}
File file = SD.open("/data.txt", FILE_WRITE);
if (!file) {
Serial.println("Failed to open file for writing");
return;
} else {
if (file.size() == 0) {
file.println("AX, AY, AZ, GX, GY, GZ, MX, MY, MZ");
}
file.close();
Serial.println("File opened and header written.");
}
}
void loop() {
// Read data from MPU9255
mpu.read_acc();
mpu.read_gyro();
mpu.read_mag();
// Log data to Serial Monitor for debugging
Serial.print("AX: ");
Serial.print(mpu.ax);
Serial.print(" AY: ");
Serial.print(mpu.ay);
Serial.print(" AZ: ");
Serial.print(mpu.az);
Serial.print("GX: ");
Serial.print(mpu.gx);
Serial.print(" GY: ");
Serial.print(mpu.gy);
Serial.print(" GZ: ");
Serial.print(mpu.gz);
Serial.print("MX: ");
Serial.print(mpu.mx);
Serial.print(" MY: ");
Serial.print(mpu.my);
Serial.print(" MZ: ");
Serial.println(mpu.mz);
// Write data to SD card
logSDCard();
delay(1000); // Delay between reads
}
void logSDCard() {
// Open the SD card file in append mode
File file = SD.open("/data.txt", FILE_APPEND);
if (!file) {
Serial.println("Failed to open file for writing");
return; // Stop function execution if file cannot be opened
}
// Format the data string
String dataMessage = String(mpu.ax) + ", " + String(mpu.ay) + ", " + String(mpu.az) + ", "
+ String(mpu.gx) + ", " + String(mpu.gy) + ", " + String(mpu.gz) + ", "
+ String(mpu.mx) + ", " + String(mpu.my) + ", " + String(mpu.mz);
// Print on Serial Monitor for debugging
Serial.print("Save data: ");
Serial.println(dataMessage);
// Write the data message to SD card
file.println(dataMessage);
// Check for write errors
if (file.getWriteError()) {
Serial.println("Error writing to file.");
file.clearWriteError(); // Clear the error code.
}
// Close the file to save the data
file.close();
}
我期望从mpu9255传感器读取的数据写入SD卡,现在它总是显示“无法打开写入”
从您的代码和评论来看,SD卡显然安装正确(因为您没有报告安装失败)。但它不会打开供写入。这里没有太多值得寻找的东西。由于安装后,读卡器必须与正确的芯片选择引脚正确连接,并且卡本身必须具有可行的格式(例如,如果您有 NTFS 格式的卡,它将无法安装)。
这给我们留下的只是一张写保护的卡、一个已经打开的文件、一张完全满的 SD 卡或一张严重碎片化的卡。所以我会尝试使用不同的 SD 卡,尝试使用不同的文件名,并检查是否没有物理写保护。