не может показать свободное место на SD-карте с arduino nano
Я использую nano v3, модуль SD и карту microSD на 64 ГБ. Запись на карту работает нормально. Но я не могу распечатать оставшееся свободное место на карте.
Я использую этот код:
/*
SD-карта чтение/запись
В этом примере показано, как читать и записывать данные в файл SD-карты и из него.
Схема:
* SD-карта подключена к шине SPI следующим образом:
** MOSI - контакт 11
** МИСО - контакт 12
** CLK — контакт 13
создано в ноябре 2010 г.
Дэвид А. Меллис
изменено 9 апреля 2012 г.
Том Айгоу
Этот пример кода находится в общественном достоянии.
*/
#include <SPI.h>
//#включить <SD.h>
#include "SdFat.h"
SdFat SD;
#define csPin 4
File myFile;
SdFat sd;
int startMillis;
int duration;
uint32_t freeKB;
void setup() {
// Открытие последовательной связи и ожидание открытия порта:
Serial.begin(9600);
while (!Serial) {
; // ждем подключения последовательного порта. Требуется только для родного порта USB
}
Serial.print("Initializing SD card...");
if (!SD.begin(csPin)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
// открываем файл. обратите внимание, что одновременно может быть открыт только один файл,
// так что вы должны закрыть это, прежде чем открывать другое.
myFile = SD.open("test.txt", FILE_WRITE);
if (myFile) {
myFile.close();
Serial.println("done.");
} else {
// если файл не открылся, вывести ошибку:
Serial.println("error opening test.txt");
}
}
void loop() {
myFile = SD.open("test.txt", FILE_WRITE);
for (int j = 0; j < 1000; j++) {
myFile.println(j);
}
myFile.close();
startMillis = millis();
ShowFreeSpace();
duration = millis() - startMillis;
Serial.print("Took ");
Serial.print(duration);
Serial.println("ms to calculate");
delay(1000);
}
void ShowFreeSpace() {
// Подсчет свободного места (объем свободных кластеров * блоков на кластер / 2)
long lFreeKB = sd.vol()->freeClusterCount();
lFreeKB *= sd.vol()->blocksPerCluster()/2;
// Показать свободное место
Serial.print("Free space: ");
Serial.print(lFreeKB);
Serial.println(" KB");
}
Что я делаю не так?
@aJazz, 👍0
Обсуждение1 ответ
▲ 1
У вас есть два экземпляра класса SdFat. В setup() вы начинаете
SD
и для свободного места пытаетесь использовать sd
. Удалите строку SdFat sd;
и в ShowFreeSpace используйте SD.vol()
.
,
@Juraj
Смотрите также:
- Как увеличить скорость записи на SD-карту в Ардуино
- SD-карта не инициализируется
- Что означают эти контакты? Куда мне их подключить?
- Режимы открытия файлов на SD-карте Arduino добавление/перезапись
- Какие контакты можно использовать для выбора микросхемы (CS, CC) на Arduino Nano Every?
- Понимание того, почему следует избегать «String» и альтернативных решений
- Сделать CS (chip select) для работаты в SPI (для и SD карты и OLED)
- Можно ли подключить экран SD-карты к плате Digispark ATtiny85?
это очень плохое описание того, что на самом деле происходит
не могу распечатать свободное место
..... оно не дает информации, которую можно было бы использовать для ответа на вопрос, @jsotolaaJazz, ты видел мой ответ?, @Juraj