Arduino:Примеры/Datalogger
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Регистрация данных от датчиков при помощи 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"
}
}
См.также
- SD library - Your reference for the SD Card library.
- Notes on using SD cards – What you need to know when you use SD cards
- CardInfo - Get info about your SD card.
- DumpFile - How to read a file from the SD card.
- Files - How to create and destroy an SD card file.
- Listfiles - How print out the files in a directory on a SD card.
- ReadWrite - How to read and write data to and from an SD card.