Arduino:Примеры/Card Info: различия между версиями
Нет описания правки |
Нет описания правки |
||
Строка 155: | Строка 155: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Портал/Arduino}} | |||
[[Категория:Пример]] | [[Категория:Пример]] | ||
[[Категория:Примеры]] | [[Категория:Примеры]] | ||
[[Категория:Пример программирования Arduino]] | [[Категория:Пример программирования Arduino]] | ||
[[Категория:Примеры программирования Arduino]] | [[Категория:Примеры программирования Arduino]] |
Текущая версия от 12:33, 8 июля 2023
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Извлечение информации о SD-карте[1]
Этот пример показывает, как при помощи библиотеки SD извлечь информацию о SD-карте – о том, в какую файловую систему она отформатирована, о свободном месте и т.д. После извлечения эта информация будет показана через монитор порта. Более подробно о библиотеке SD можно прочесть тут.
Необходимое оборудование
- Плата Arduino или Genuino
- Ethernet-модуль Arduino (или другая плата с SD-слотом)
- Отформатированная SD-карта
Цепь
Плата Arduino/Genuino должна быть подключена к Ethernet-модулю и иметь USB-кабель, подключенный к компьютеру.
Схема
Код
Скетч ниже настроен для использования с Ethernet-модулем Arduino, который имеет встроенный SD-слот. В блоке setup() вызываем функцию SD.begin(), а затем в качестве CS-контакта делаем 4-ый контакт. Однако если вместо модуля Arduino Ethernet Shield будет использоваться другой модуль, вам нужно будет задействовать другой контакт (подробнее смотрите в самом скетче).
Чтобы получить информацию о SD-карте, используются вспомогательные библиотеки, которые не подключены в самом начале скетча. Информация о SD-карте – это файловая система (FAT16 или FAT32), файловая структура, а также количество свободного и занятого места.
/*
Тест SD-карты
Этот пример показывает, как использовать вспомогательные
библиотеки, на которых базируется библиотека SD, чтобы получить
информацию об SD-карте. Он может пригодиться, к примеру, если вы не
уверены, работает ли карта или нет.
Цепь:
* SD-карта, подключенная к шине SPI следующим образом:
** MOSI – к 11-ому контакту на Arduino Uno/Duemilanove/Diecimila
** MISO - к 12-ому контакту на Arduino Uno/Duemilanove/Diecimila
** CLK – к 13-ому контакту на Arduino Uno/Duemilanove/Diecimila
** CS – зависит от модуля со слотом для SD-карты (4-ый контакт
используется здесь для совместимости с другими скетчами Arduino)
Создан 28 марта 2011 года Лимор Фрид (Limor Fried),
модифицирован 9 апреля 2012 года Томом Иго (Tom Igoe).
*/
// подключаем библиотеку SD:
#include <SPI.h>
#include <SD.h>
// задаем переменные, использующие функции вспомогательных библиотек:
Sd2Card card;
SdVolume volume;
SdFile root;
// поменяйте эту цифру, чтобы она соответствовала вашему устройству;
// модуль Arduino Ethernet Shield – 4-ый контакт
// модули Adafruit – 10-ый контакт
// модуль Sparkfun SD Shield – 8-ой контакт
const int chipSelect = 4;
void setup() {
// запускаем последовательную коммуникацию и ждем открытия порта:
Serial.begin(9600);
while (!Serial) {
; // ждем подключения последовательного порта (нужно только для плат со штатным USB-портом)
}
Serial.print("\nInitializing SD card..."); // "\nИнициализация SD-карты..."
// используем инициализационный код из вспомогательных библиотек,
// чтобы протестировать, работает ли карта:
if (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println("initialization failed. Things to check:"); // "инициализация не удалась. Проверьте следующее:"
Serial.println("* is a card inserted?"); // "* вставлена ли карта?"
Serial.println("* is your wiring correct?"); // "* правильно ли все подключено?"
Serial.println("* did you change the chipSelect pin to match your shield or module?"); // "* контакт в chipSelect соответствует используемому модулю?"
return;
} else {
Serial.println("Wiring is correct and a card is present."); // "Карта распознается и все подключено правильно."
}
// показываем тип карты:
Serial.print("\nCard type: "); // "\nТип карты: "
switch (card.type()) {
case SD_CARD_TYPE_SD1:
Serial.println("SD1");
break;
case SD_CARD_TYPE_SD2:
Serial.println("SD2");
break;
case SD_CARD_TYPE_SDHC:
Serial.println("SDHC");
break;
default:
Serial.println("Unknown"); // "Неизвестно"
}
// теперь попытаемся открыть раздел – он должен быть в формате FAT16 или FAT32:
if (!volume.init(card)) {
Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card"); // "Не получается найти раздел FA16/FAT32.\nУбедитесь, что карта отформатирована"
return;
}
// показываем тип и размер первого FAT-раздела:
uint32_t volumesize;
Serial.print("\nVolume type is FAT"); // "\nТип раздела - FAT"
Serial.println(volume.fatType(), DEC);
Serial.println();
volumesize = volume.blocksPerCluster(); // кластеры – это совокупности блоков
volumesize *= volume.clusterCount(); // кластеров много
volumesize *= 512; // блоки SD-карты всегда состоят из 512 байтов
Serial.print("Volume size (bytes): "); // "Размер раздела (в байтах): "
Serial.println(volumesize);
Serial.print("Volume size (Kbytes): "); // "Размер раздела (в килобайтах): "
volumesize /= 1024;
Serial.println(volumesize);
Serial.print("Volume size (Mbytes): "); // "Размер раздела (в мегабайтах): "
volumesize /= 1024;
Serial.println(volumesize);
Serial.println("\nFiles found on the card (name, date and size in bytes): "); // "\nФайлы, найденные на карте (название, дата, размер в байтах): "
root.openRoot(volume);
// перечисляем все файлы на карте (с указанием даты и размера):
root.ls(LS_R | LS_DATE | LS_SIZE);
}
void loop(void) {
}
См.также
- SD library - Your reference for the SD Card library.
- Notes on using SD cards – What you need to know when you use SD cards
- Datalogger - How to log data from three analog sensors to an 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.
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino