为什么mpu9255的数据无法写入sd卡?

问题描述 投票:0回答:1

全部。

我尝试将数据从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卡,现在它总是显示“无法打开写入”

arduino microcontroller esp32 arduino-esp32
1个回答
0
投票

从您的代码和评论来看,SD卡显然安装正确(因为您没有报告安装失败)。但它不会打开供写入。这里没有太多值得寻找的东西。由于安装后,读卡器必须与正确的芯片选择引脚正确连接,并且卡本身必须具有可行的格式(例如,如果您有 NTFS 格式的卡,它将无法安装)。

这给我们留下的只是一张写保护的卡、一个已经打开的文件、一张完全满的 SD 卡或一张严重碎片化的卡。所以我会尝试使用不同的 SD 卡,尝试使用不同的文件名,并检查是否没有物理写保护。

© www.soinside.com 2019 - 2024. All rights reserved.