Использование библиотеки SD для Arduino для чтения и записи файла на SD карте

Добавлено 8 апреля 2018 в 14:32

Данный пример показывает, как Arduino может читать и записывать данные на SD карте. Для более подробной информации о библиотеке SD перейдите по ссылке.

Необходимые комплектующие

Схема

Arduino Ethernet Shield
Плата расширения Ethernet Shield

Плата Arduino или Genuino должна быть подключена к плате расширения Ethernet Shield, а также к компьютеру с помощью USB кабеля.

Arduino Ethernet Shield
Подключение платы расширения Ethernet Shield к плате Arduino

Код

Код ниже настроен для работы с платой расширение 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() 
{
  // после завершения настройки ничего не делать.
}

Теги

ArduinoArduino ShieldSD картаПлата расширенияПрограммирование

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.