Создание файла на SD-карте

У меня есть Arduino Mega, подключенная к устройству чтения SD-карт (торговая марка Catalex), которое, по крайней мере, обнаруживает карту, когда отображает информацию о карте. Но когда я пытаюсь создать файл, он его не создает. Я использую следующий код:

if (SD.exists("data.txt")) {
  Serial.println("data.txt exists.");
} else {
  Serial.println("data.txt doesn't exist.");
}
File root=SD.open("data.txt", FILE_WRITE); //открываем Файл на запись
if (SD.exists("data.txt")) {
  Serial.println("data.txt exists.");
} else {
  Serial.println("data.txt doesn't exist.");
}

Я также пытался использовать этот код:

File root2 = SD.open("file.txt", O_RDWR | O_APPEND);
    if (!root2) {
       // Это не удалось, поэтому попробуйте создать новый файл.
        root2 = SD.open("file.txt", O_RDWR | O_CREAT);
        if (!root2) {
          // Это тоже не удалось, так что сдавайся.
        Serial.println("Failed to open file.txt");
         }
    }

[Обновить]

Я также пытался использовать этот более простой код, но он тоже не работает:

#include <SD.h>


const int chipSelect = 10;
Sd2Card card;

void setup() {
  Serial.begin(115200);
  while (!Serial) {
    ; // ждем подключения последовательного порта. Требуется только для родного порта USB
  }
  Serial.print("Initializing SD card...");
  // смотрим, присутствует ли карта и может ли она быть инициализирована:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // больше ничего не делаем:
    return;
  }
  Serial.println("card initialized.");
}

void loop() {
  File myFile = SD.open("Data.txt", FILE_WRITE);
  if (myFile) {
    for (int i = 0; i < 101; i++) {
      myFile.print(i);
      myFile.print(" multiplied by two is ");
      myFile.println(i * 2, DEC);
    }
    Serial.println("Finished");
    myFile.close();
  } else {
    Serial.println("Error opening Data.txt");
  }
  // больше ничего не делать
  do { } while(1);
}

, 👍3

Обсуждение

Я не думаю, что это имеет значение, но можете ли вы попытаться закрыть файл после открытия и до вызова exists?, @Michel Keijzers

@MichelKeijzers Да, я пробовал, и это не работает, @Miguel Sanz Narrillos

Можно попробовать отформатировать карту в другом формате (я не знаю, какие форматы поддерживает библиотека), также можно проверить, действительно ли файл создается (на ПК) или существующий не работает., @Michel Keijzers

@MichelKeijzers Я не понимаю, почему я открываю новый файл кода и копирую код, и это сработало. Спасибо за помощь, @Miguel Sanz Narrillos

Рад, что вы можете продолжить сейчас, @Michel Keijzers


2 ответа


2
// открываем новый файл и тут же его закрываем:

Serial.println("Creating example.txt...");
myFile = SD.open("example.txt", FILE_WRITE);
myFile.close();

Это то, что вы пропустили (наверное...). Перейдите по ссылке и ознакомьтесь с выполненными шагами:
https://www.arduino.cc/en/Tutorial/Files

,

0

Если вы хотите убедиться, что у него не будет проблем с форматом SD-карты, отформатируйте ее в FAT, это наиболее совместимый тип формата.

,