Dump File: использование библиотеки SD для Arduino для получения информации с SD карты через последовательный порт
Данный пример показывает, как прочитать файл с SD карты с помощью библиотеки SD и передать его содержимое через последовательный порт. Для более подробной информации о библиотеке SD перейдите по ссылке.
Необходимые комплектующие
- плата Arduino или Genuino;
- плата расширения Ethernet Shield (или любая другая плата со слотом SD);
- форматированная SD карта с файлом "datalog.txt", который содержит какой-либо текст.
Схема
Плата Arduino или Genuino должна быть подключена к плате расширения Ethernet Shield, а также к компьютеру с помощью USB кабеля.
Код
Код ниже настроен для работы с платой расширение 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()
{
}