diff --git a/.editorconfig b/.editorconfig index a93d309..e9429ed 100644 --- a/.editorconfig +++ b/.editorconfig @@ -13,4 +13,5 @@ indent_style = space indent_size = 2 [*.md] +indent_size = 2 trim_trailing_whitespace = false diff --git a/README.md b/README.md new file mode 100644 index 0000000..755e4df --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +## Start sketch + +```cpp +/** + * Sketch description + * + * Author: Alexander Popov + * License: Unlicense + */ + +void setup() { + // ... +} + +void loop() { + // .. +} +``` diff --git a/SDCard/Fritzing/Connection.fzz b/SDCard/Fritzing/Connection.fzz new file mode 100644 index 0000000..e84d78e Binary files /dev/null and b/SDCard/Fritzing/Connection.fzz differ diff --git a/SDCard/Fritzing/Connection.png b/SDCard/Fritzing/Connection.png new file mode 100644 index 0000000..9cd23c8 Binary files /dev/null and b/SDCard/Fritzing/Connection.png differ diff --git a/SDCard/README.md b/SDCard/README.md new file mode 100644 index 0000000..2de2bb9 --- /dev/null +++ b/SDCard/README.md @@ -0,0 +1,10 @@ +## Подключение модуля SD карт к Arduino + +Модуль для считывания SD карт подключается по интерфейсу **SPI**. + +Плата подключается к пинам +D10 -> CS, D11 -> MOSI, D12 -> MISO, D13 -> SCLK, 5V -> VIN (если на плате есть стабилизатор, если нет то 3,3V), GND -> GND. + +Вот наглядная схема: + +![](Fritzing/Connection.png) diff --git a/SDCard/SDCard.ino b/SDCard/SDCard.ino new file mode 100644 index 0000000..3a6f2b0 --- /dev/null +++ b/SDCard/SDCard.ino @@ -0,0 +1,143 @@ +/** + * ... + * + * Author: Alexander Popov + * License: Unlicense + */ + +// Необходимо выбрать одну из программ +// #define PROGRAM_SERVICE +// #define PROGRAM_WRITE +// #define PROGRAM_READ + +#include +#include + +Sd2Card card; +SdVolume volume; +SdFile root; + +// Пин CS +const int chipSelect = 10; + +void setup() { + #ifdef PROGRAM_SERVICE + + Serial.begin(9600); + Serial.print("\nInitializing SD card..."); + + // Неверное подключение или карта неисправна + if (!card.init(SPI_HALF_SPEED, chipSelect)) { + Serial.println("initialization failed"); + return; + } else { + Serial.println("Wiring is correct and a card is present."); + } + + // Считываем тип карты и выводим его в COM-порт + Serial.print("\nCard type: "); + 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"); + } + + // Инициализация файловой системы + if (!volume.init(card)) { + // Неверная файловая система + Serial.println("Could not find FAT16/FAT32 partition."); + return; + } + + // Считываем тип и вычисляем размер первого раздела + uint32_t volumesize; + Serial.print("\nVolume type is FAT"); + Serial.println(volume.fatType(), DEC); + Serial.println(); + + volumesize = volume.blocksPerCluster(); // блоков на кластер + volumesize *= volume.clusterCount(); // кластеров + volumesize *= 512; // 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): "); + root.openRoot(volume); + + // Выводим список файлов + root.ls(LS_R | LS_DATE | LS_SIZE); + + #endif + + #ifdef PROGRAM_WRITE + + Serial.begin(9600); + + if (!SD.begin(chipSelect)) { + Serial.println("Card failed, or not present."); + return; + } + + // Строка, которую мы запишем в файл + String dataString = "Hello, i'm Alexander Popov"; + + // Открываем файл, в который будет записана строка + File dataFile = SD.open("test.txt", FILE_WRITE); + + if (dataFile) { + // Записываем строку в файл + dataFile.println(dataString); + dataFile.close(); + Serial.println("Success!"); + } else { + // Выводим ошибку если не удалось открыть файл + Serial.println("Error opening file."); + } + + #endif + + #ifdef PROGRAM_READ + + Serial.begin(9600); + + if(!SD.begin( chipSelect )) { + Serial.println("Initialization failed!"); + return; + } + + // Открываем файл для чтения + File myFile = SD.open("test.txt"); + if (myFile) { + // Считываем все байты из файла и выводим их в COM-порт + while (myFile.available()) { + Serial.write(myFile.read()); + } + + // Закрываем файл + myFile.close(); + } + else { + // Выводим ошибку если не удалось открыть файл + Serial.println("Error opening test_file.txt"); + } + + #endif +} + +void loop(void) { + // ... +}