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

Arduino:Примеры/Read Write

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

Перевод: Максим Кузьмин (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 будет использоваться другой модуль, вам нужно будет задействовать другой контакт.

В блоке setup() при помощи функции SD.open() создаем новый файл под названием test.txt. Параметр FILE_WRITE нужен, чтобы разрешить для этого файла считывание и запись (начиная с конца). Если на SD-карте уже есть файл с таким именем, функция SD.open() просто откроет его.

Называем экземпляр открытого файла myFile.

Открыв файл, используем функцию myFile.println(), чтобы записать на SD-карту строку, вслед за которой будет идти символ возврата строки. Когда строка будет записана, закрываем файл.

Затем еще раз открываем файл функцией SD.open(). Открыв, просим Arduino прочитать содержимое файла при помощи функции myFile.read(), а затем отсылаем его через последовательный порт. После того, как содержимое файла будет прочитано, закрываем файл с помощью функции myFile.close().

  1. /*
  2.   Считывание и запись на SD-карту
  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.  
  17.  Этот код не защищен авторским правом.
  18.  
  19.  */
  20.  
  21. #include <SPI.h>
  22. #include <SD.h>
  23.  
  24. File myFile;
  25.  
  26. void setup() {
  27.   // запускаем последовательную коммуникацию и ждем открытия порта:
  28.   Serial.begin(9600);
  29.   while (!Serial) {
  30.     ; // ждем подключения последовательного порта (нужно только для плат со штатным USB-портом)
  31.   }
  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.   // открываем файл (обратите внимание, что одновременно может быть
  43.   // открыт только один файл; то есть перед тем, как открывать
  44.   // следующий файл, закройте этот):
  45.   myFile = SD.open("test.txt", FILE_WRITE);
  46.  
  47.   // если файл открылся корректно, выполняем запись:
  48.   if (myFile) {
  49.     Serial.print("Writing to test.txt...");  //  "Запись в test.txt..."
  50.     myFile.println("testing 1, 2, 3.");  //  "тестирование 1, 2, 3."
  51.     // закрываем файл:
  52.     myFile.close();
  53.     Serial.println("done.");  //  "готово."
  54.   } else {
  55.     // если файл не открылся, сообщаем об ошибке:
  56.     Serial.println("error opening test.txt");  //  "ошибка при открытии test.txt"
  57.   }
  58.  
  59.   // еще раз открываем файл – теперь для считывания:
  60.   myFile = SD.open("test.txt");
  61.   if (myFile) {
  62.     Serial.println("test.txt:");
  63.  
  64.     // считываем содержимое файла до тех пор, пока нечего будет считывать:
  65.     while (myFile.available()) {
  66.       Serial.write(myFile.read());
  67.     }
  68.     // закрываем файл:
  69.     myFile.close();
  70.   } else {
  71.     // если файл не открылся, сообщаем об ошибке:
  72.     Serial.println("error opening test.txt");  //  "ошибка при открытии test.txt"
  73.   }
  74. }
  75.  
  76. void loop() {
  77.   // после setup() ничего не происходит
  78. }

См.также

  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. Listfiles - How print out the files in a directory on a SD card.

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

  1. ReadWrite