Arduino:Примеры/Datalogger: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
м (Замена текста — «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">» на «<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">»)
 
Нет описания правки
Строка 34: Строка 34:
Теперь открываем на '''SD'''-карте файл при помощи функции [[Arduino:Библиотеки/SD/Класс SD/open()|SD.open()]]. Далее, когда данные станут доступными, записываем их '''SD'''-на карту при помощи функции [[Arduino:Библиотеки/SD/Класс File/println()|dataFile.println()]]. И в финале закрываем этот файл функцией [[Arduino:Библиотеки/SD/Класс File/close()|dataFile.close()]], тем самым сохраняя записанную на него информацию.
Теперь открываем на '''SD'''-карте файл при помощи функции [[Arduino:Библиотеки/SD/Класс SD/open()|SD.open()]]. Далее, когда данные станут доступными, записываем их '''SD'''-на карту при помощи функции [[Arduino:Библиотеки/SD/Класс File/println()|dataFile.println()]]. И в финале закрываем этот файл функцией [[Arduino:Библиотеки/SD/Класс File/close()|dataFile.close()]], тем самым сохраняя записанную на него информацию.


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
/*
/*
   Регистрация данных посредством SD-карты
   Регистрация данных посредством SD-карты

Версия от 18:18, 14 мая 2023

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


Регистрация данных от датчиков при помощи SD-карты[1]

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

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

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

Цепь

Плата Arduino или Genuino должна быть подключена к Ethernet-модулю. Аналоговые датчики можно заменить тремя потенциометрами, но подключенными в соответствии с их интерфейсными особенностями.

Схема

Код

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

В блоке loop() создаем строку (string), которая будет использоваться для хранения данных от датчиков. Код будет переходить от одного датчика к другому, добавляя собранные данные в строку.

Теперь открываем на SD-карте файл при помощи функции SD.open(). Далее, когда данные станут доступными, записываем их SD-на карту при помощи функции dataFile.println(). И в финале закрываем этот файл функцией dataFile.close(), тем самым сохраняя записанную на него информацию.

/*
  Регистрация данных посредством SD-карты

 Этот пример показывает, как регистрировать данные от трех аналоговых
 датчиков путем их записи на SD карту при помощи библиотеки SD. 

 Цепь:
 * аналоговые датчики – к аналоговым контактам 0, 1 и 2 на Arduino
 * SD-карта, подключенная к шине SPI следующим образом: 
 ** MOSI – к 11-ому контакту на Arduino 
 ** MISO - к 12-ому контакту на Arduino 
 ** CLK – к 13-ому контакту на Arduino 
 ** CS – к 4-ому контакту

 Создан 24 ноября 2010 года, 
 модифицирован 9 апреля 2012 года Томом Иго (Tom Igoe). 

 Этот код не защищен авторским правом.

 */

#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");  //  "Карта повреждена или отсутствует"
    // ничего не делаем:
    return;
  }
  Serial.println("card initialized.");  //  "карта инициализирована."
}

void loop() {
  // создаем строку для сбора данных:
  String dataString = "";

  // считываем данные от датчиков и добавляем их в строку:
  for (int analogPin = 0; analogPin < 3; analogPin++) {
    int sensor = analogRead(analogPin);
    dataString += String(sensor);
    if (analogPin < 2) {
      dataString += ",";
    }
  }

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

  // если файл доступен, записываем в него данные:
  if (dataFile) {
    dataFile.println(dataString);
    dataFile.close();
    // также выводим эти данные на монитор порта:
    Serial.println(dataString);
  }
  // если файл не открылся, сообщаем об ошибке:
  else {
    Serial.println("error opening datalog.txt");  //  "ошибка при открытии datalog.txt"
  }
}

См.также

  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. DumpFile - How to read a file from the SD card.
  5. Files - How to create and destroy an SD card file.
  6. Listfiles - How print out the files in a directory on a SD card.
  7. ReadWrite - How to read and write data to and from an SD card.

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