Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/List Files

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Извлечение списка файлов SD-карты и его отправка на компьютер[1]

Этот пример показывает, как вывести на компьютер список файлов, имеющихся на SD-карте. Более подробно о библиотеке SD можно прочесть тут.

Необходимое оборудование

  • Плата Arduino или Genuino
  • Модуль Arduino Ethernet Shield (или другая плата с SD-слотом)
  • Отформатированная SD-карта

Цепь

EthernetShield Fritz.png

Плата Arduino или Genuino должна быть подключена к Ethernet-модулю, а также через USB-кабель – к компьютеру.

Схема

Ethernet Shield Sch.png

Код

Скетч ниже настроен для использования с Ethernet-модулем, который имеет встроенный SD-слот. В блоке setup() вызываем функцию SD.begin(), а затем в качестве CS-контакта делаем 4-ый контакт. Однако если вместо модуля Arduino Ethernet Shield будет использоваться другой модуль, вам нужно будет задействовать другой контакт.

В главном блоке loop() ничего не выполняется, потому что функция, которая выводит список файлов, находящихся в директории «/» SD-карты, вызывается в блоке setup(). Другими словами, нам нужно просто увидеть, как это работает, и одного раза для этого достаточно.

Функция printDirectory() сканирует SD-карту на предмет файлов и папок, а затем показывает их через монитор порта. Для файлов показывается размер.

  1. /*
  2.   Вывод списка файлов
  3.  
  4.  Этот пример показывает, как отобразить на компьютере список файлов,
  5.  расположенных на SD-карте
  6.  
  7.  Цепь:
  8.  * SD-карта, подключенная к шине SPI следующим образом:
  9.  ** MOSI – к 11-ому контакту на Arduino
  10.  ** MISO - к 12-ому контакту на Arduino
  11.  ** CLK – к 13-ому контакту на Arduino
  12.  ** CS – к 4-ому контакту
  13.  
  14.  Создан в ноябре 2010 года Дэвидом А. Меллисом (David A. Mellis),
  15.  модифицирован 9 апреля 2012 года Томом Иго (Tom Igoe),
  16.  еще раз модифицирован 2 февраля 2014 года Скоттом Фитцджеральдом
  17.  (Scott Fitzgerald).
  18.  
  19.  Этот код не защищен авторским правом.
  20.  
  21.  */
  22. #include <SPI.h>
  23. #include <SD.h>
  24.  
  25. File root;
  26.  
  27. void setup() {
  28.   // запускаем последовательную коммуникацию и ждем открытия порта:
  29.   Serial.begin(9600);
  30.   while (!Serial) {
  31.     ; // ждем подключения последовательного порта (нужно только для плат со штатным USB-портом)
  32.   }
  33.  
  34.   Serial.print("Initializing SD card...");  //  "Инициализация SD-карты..."
  35.  
  36.   if (!SD.begin(4)) {
  37.     Serial.println("initialization failed!");  //  "инициализация не удалась!"
  38.     return;
  39.   }
  40.   Serial.println("initialization done.");  //  "инициализация выполнена."
  41.  
  42.   root = SD.open("/");
  43.  
  44.   printDirectory(root, 0);
  45.  
  46.   Serial.println("done!");    //  "готово!"
  47. }
  48.  
  49. void loop() {
  50.   // после выполнения setup() ничего не происходит
  51. }
  52.  
  53. void printDirectory(File dir, int numTabs) {
  54.   while (true) {
  55.  
  56.     File entry =  dir.openNextFile();
  57.     if (! entry) {
  58.       // файлов больше нет
  59.       break;
  60.     }
  61.     for (uint8_t i = 0; i < numTabs; i++) {
  62.       Serial.print('\t');
  63.     }
  64.     Serial.print(entry.name());
  65.     if (entry.isDirectory()) {
  66.       Serial.println("/");
  67.       printDirectory(entry, numTabs + 1);
  68.     } else {
  69.       // у файлов есть размеры, у директорий – нет:
  70.       Serial.print("\t\t");
  71.       Serial.println(entry.size(), DEC);
  72.     }
  73.     entry.close();
  74.   }
  75. }

См.также

  1. SD library - Your reference for the SD Card library.
  2. Notes on using SD cards – What you need to know when you use SD cards
  3. CardInfo - Get info about your SD card.
  4. Datalogger - How to log data from three analog sensors to an SD card.
  5. DumpFile - How to read a file from the SD card.
  6. Files - How to create and destroy an SD card file.
  7. ReadWrite - How to read and write data to and from an SD card

Внешние ссылки

  1. listfiles