Arduino записывает только один раз на SD-карту - журнал данных
Я подключил SD-карту к Arduino, как описано здесь. Проблема в том, что Arduino записывает только один раз на SD-карту, и я не понимаю причины.
#include <SD.h>
#include <SPI.h>
int CS_PIN = 4;
File file;
void setup() {
Serial.begin(9600);
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);
Serial.print("Initializing SD card...");
if (!SD.begin(CS_PIN)) {
Serial.println("Card failed, or not present");
return;
}
Serial.println("card initialized.");
}
void loop() {
String dataString = "TEST";
File dataFile = SD.open("datalog.txt");
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
Serial.println(dataString);
} else {
Serial.println("error opening datalog.txt");
}
delay(1000);
}
Вывод на последовательный монитор:
Arduino записывает только один раз на SD-карту открытие ошибки datalog.txt ошибка открытия datalog.txt ошибка открытия datalog.txt ошибка открытия datalog.txt ошибка открытия datalog.txt ошибка открытия datalog.txt ошибка открытия datalog.txt ошибка открытия datalog.txt ошибка открытия datalog.txt ошибка открытия datalog.txt ошибка открытия datalog.txt ошибка открытия datalog.txt ошибка открытия datalog.txt
Я также попытался использовать:
SD.open("file.txt", O_RDWR | O_APPEND);
SD.open("file.txt", O_RDWR | O_CREAT);
Как я видел, добавление данных в файл SD-карты, но это не работает.
@Ugo Mela, 👍1
Обсуждение3 ответа
Вы открываете файл в режиме чтения, но должны открывать его в режиме записи. Изменить файл dataFile = SD.open("datalog.txt ");
в файл dataFile = SD.open("datalog.txt ", FILE_WRITE);
.
Вы можете удалить эту строку кода: digitalWrite(10, HIGH);
.
В arduino.cc веб-сайт также является отличным источником информации о библиотеке SD.
Файл dataFile = SD.открыть("datalog.txt ");
Многократное открытие одного и того же файла, вероятно, не является хорошей практикой, если вы хотите сохранить ранее записанное содержимое.
Для людей, сталкивающихся с той же проблемой. У меня была такая же проблема, когда SD-карта запускала инструкцию if только один раз, а затем больше не читала ее. По какой-то причине, после того, как я запустил примеры сценариев CardInfo, DumpFile и ReadWrite в библиотеке SD (изменив название команды SD.open() на то, которое я использовал), мой код начал работать, и он начал выполнять оператор if каждый раз. Я бы рекомендовал попробовать это, если вы столкнулись с той же проблемой.
Интересно, что у меня возникла проблема с открытием файла на моей SD-карте с помощью датчика считывателя SD-карт и моего Elegoo Mega2560, и запуск примера CardInfo (в библиотеке SD) решил ее для меня. В первый раз пример CardInfo выдал ошибку, а затем (просто сказав, что я сделал) Я вытащил свою SD-карту и вставил ее обратно, а затем снова запустил пример CardInfo, и тогда это сработало. Итак... Если у вас, ребята, возникнут какие-нибудь проблемы. Попробуйте использовать пример CardInfo из библиотеки SD и снова вставьте свою SD-карту., @David
это указывает на проблемы с выводом CS, @Juraj
- Как увеличить скорость записи на SD-карту в Ардуино
- SD-карта не инициализируется
- Что означают эти контакты? Куда мне их подключить?
- Режимы открытия файлов на SD-карте Arduino добавление/перезапись
- Какие контакты можно использовать для выбора микросхемы (CS, CC) на Arduino Nano Every?
- Понимание того, почему следует избегать «String» и альтернативных решений
- Сделать CS (chip select) для работаты в SPI (для и SD карты и OLED)
- Можно ли подключить экран SD-карты к плате Digispark ATtiny85?
разве вам не нужен режим при открытии?, @dandavis
откройте файл в разделе
настройка
. затем запишите данные вцикл
. после того как все данные будут записаны, закройте файл, @jsotola