Использование библиотеки SD для Arduino для чтения и записи файла на SD карте
Данный пример показывает, как Arduino может читать и записывать данные на SD карте. Для более подробной информации о библиотеке SD перейдите по ссылке.
Необходимые комплектующие
- плата Arduino или Genuino;
- плата расширения Ethernet Shield (или любая другая плата со слотом SD);
- форматированная SD карта.
Схема
Плата Arduino или Genuino должна быть подключена к плате расширения Ethernet Shield, а также к компьютеру с помощью USB кабеля.
Код
Код ниже настроен для работы с платой расширение Ethernet Shield, на которой установлен SD слот. В setup()
, вызове SD.begin()
, обозначении вывода 4 в качестве вывода SC. Этот вывод зависит от типа платы расширения, которую вы используете.
В setup() создаем новый файл с помощью SD.open()
с именем "test.txt". FILE_WRITE
включает доступ к чтению и записи файла, начиная с конца. Если файл "test.txt" уже существует на карте, то он будет открыт.
Имя экземпляра открытого файла - "myFile
".
После открытия используем myFile.println()
для записи на карту строки и символа возврата каретки. Когда контент будет записан, закрываем файл.
Затем снова открываем файл с помощью SD.open()
. После открытия Arduino прочитает содержимое файла с помощью SD.read()
и отправит его через последовательный порт. После того, как всё содержимое файла будет прочитано, закрываем файл с помощью SD.close()
.
/*
Чтение/запись на SD карту
Схема:
* SD подключена к шине SPI следующим образом:
** MOSI - вывод 11
** MISO - вывод 12
** CLK - вывод 13
** CS - вывод 4 (для MKRZero SD: SDCARD_SS_PIN)
*/
#include <SPI.h>
#include <SD.h>
File myFile;
void setup()
{
// Открыть последовательное соединение и ждать открытия порта:
Serial.begin(9600);
while (!Serial)
{
; // ждать подключения последовательного порта. Необходимо только для USB порта
}
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
while (1);
}
Serial.println("initialization done.");
// Открыть файл. Обратите внимание, что в какой-либо момент может быть открыт только один файл,
// поэтому вы должны закрыть один файл перед открытием следующего.
myFile = SD.open("test.txt", FILE_WRITE);
// если файл открыт, то записать в него:
if (myFile)
{
Serial.print("Writing to test.txt...");
myFile.println("testing 1, 2, 3.");
// закрыть файл:
myFile.close();
Serial.println("done.");
}
else
{
// если файл не открыт, то вывести сообщение об ошибке:
Serial.println("error opening test.txt");
}
// снова открыть файл для чтения:
myFile = SD.open("test.txt");
if (myFile)
{
Serial.println("test.txt:");
// читать из файла, пока в нем ничего не останется:
while (myFile.available())
{
Serial.write(myFile.read());
}
// закрыть файл:
myFile.close();
}
else
{
// если файл не открыт, то вывести сообщение об ошибке:
Serial.println("error opening test.txt");
}
}
void loop()
{
// после завершения настройки ничего не делать.
}