Dump File: использование библиотеки SD для Arduino для получения информации с SD карты через последовательный порт

Добавлено 7 апреля 2018 в 15:14

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

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

  • плата Arduino или Genuino;
  • плата расширения Ethernet Shield (или любая другая плата со слотом SD);
  • форматированная SD карта с файлом "datalog.txt", который содержит какой-либо текст.

Схема

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

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

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

Код

Код ниже настроен для работы с платой расширение Ethernet Shield, на которой установлен SD слот. В setup(), вызове SD.begin(), обозначении вывода 4 в качестве вывода SC. Этот вывод зависит от типа платы расширения, которую вы используете.

На SD карте должен быть файл с именем "datalog.txt". В функции loop() этот файл открывается с помощью SD.open(). Для последовательной передачи файла на компьютер используется Serial.print(), чтение контента файла осуществляется с помощью SD.read().

/*
  SD card file dump

  Схема:
 * SD подключена к шине SPI следующим образом:
 ** MOSI - вывод 11
 ** MISO - вывод 12
 ** CLK - вывод 13
 ** CS - вывод 4 (для MKRZero SD: SDCARD_SS_PIN)

 */

#include <SPI.h>
#include <SD.h>

const int chipSelect = 4;

void setup() 
{
  // Открыть последовательное соединение и ждать открытия порта:
  Serial.begin(9600);
  while (!Serial) 
  {
    ; // ждать подключения последовательного порта. Необходимо только для USB порта
  }


  Serial.print("Initializing SD card...");

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

  // открыть файл. обратите внимание, что за раз может быть открыт только один файл,
  // поэтому вы должны закрыть его перед открытием другого.
  File dataFile = SD.open("datalog.txt");

  // если файл доступен, то прочитать его:
  if (dataFile) 
  {
    while (dataFile.available()) 
    {
      Serial.write(dataFile.read());
    }
    dataFile.close();
  }
  // если файл не открыт, вывести сообщение об ошибке:
  else 
  {
    Serial.println("error opening datalog.txt");
  }
}

void loop() 
{
}

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


Сообщить об ошибке