#include <SD.h>
#include <SPI.h>
const int chipSelect = 10;
void setup() {
Serial.begin(9600);
if (!SD.begin(chipSelect)) {
Serial.println("SD карта не знайдена.");
return;
}
Serial.println("SD карта готова до використання.");
}
void loop() {
Serial.println(F("Оберіть опцію:"));
Serial.println(F("[1] Вивести перелік файлів на карті"));
Serial.println(F("[2] Видалити вибраний файл"));
Serial.println(F("[3] Створити порожній файл"));
Serial.println(F("[4] Записати у вибраний файл дані з клавіатури"));
Serial.println(F("[5] Вивести вміст і розмір вибраного файлу"));
while (!Serial.available()) {
// Чекаємо на введення користувача
}
int choice = Serial.parseInt();
Serial.read();
Serial.println(choice);
switch (choice) {
case 1:
listFiles();
break;
case 2:
deleteFile();
break;
case 3:
createEmptyFile();
break;
case 4:
writeToFile();
break;
case 5:
readFileContents();
break;
default:
Serial.println(F("Неправильний вибір."));
break;
}
}
void listFiles() {
Serial.println(F("Список файлів на SD-карті:"));
File root = SD.open("/");
while (File file = root.openNextFile()) {
Serial.println(file.name());
file.close();
}
root.close();
}
void deleteFile() {
Serial.println(F("Введіть ім'я файлу, який потрібно видалити:"));
while (!Serial.available()) {
// Чекаємо на введення користувача
}
char fileName[12];
Serial.readBytes(fileName, sizeof(fileName));
fileName[strcspn(fileName, "\r\n")] = '\0';
if (!SD.exists(fileName)) {
Serial.println(F("Файлу не існує!"));
return;
}
if (SD.remove(fileName)) {
Serial.println(F("Файл успішно видалено."));
} else {
Serial.println(F("Не вдалося видалити файл."));
}
}
void createEmptyFile() {
Serial.println(F("Введіть ім'я нового файлу:"));
while (!Serial.available()) {
// Чекаємо на введення користувача
}
char fileName[12];
Serial.readBytes(fileName, sizeof(fileName));
fileName[strcspn(fileName, "\r\n")] = '\0';
// Перевірка, чи файл вже існує
if (SD.exists(fileName)) {
Serial.println(F("Такий файл вже існує"));
return;
}
// Створення нового файлу
File newFile = SD.open(fileName, FILE_WRITE);
if (newFile) {
newFile.close();
Serial.println(F("Файл створено успішно."));
} else {
Serial.println(F("Не вдалося створити файл."));
}
}
void writeToFile() {
Serial.println(F("Введіть ім'я файлу для запису:"));
while (!Serial.available()) {
// Чекаємо на введення користувача
}
char fileName[12];
Serial.readBytes(fileName, sizeof(fileName));
fileName[strcspn(fileName, "\r\n")] = '\0'; // Видаляємо символи нового рядка
// Перевірка, чи файл існує
if (!SD.exists(fileName)) {
Serial.println(F("Файл не існує."));
return;
}
Serial.println(F("Введіть дані для запису в файл:"));
while (!Serial.available()) {
// Чекаємо на введення користувача
}
char data[100];
Serial.readBytes(data, sizeof(data));
data[strcspn(data, "\r\n")] = '\0'; // Видаляємо символи нового рядка
// Відкриття файлу для запису і запис даних
File file = SD.open(fileName, FILE_WRITE);
if (file) {
file.print(data);
file.close();
Serial.println(F("Дані успішно записані в файл."));
} else {
Serial.println(F("Не вдалося відкрити файл для запису."));
}
}
void readFileContents() {
Serial.println(F("Введіть ім'я файлу для читання:"));
while (!Serial.available()) {
// Чекаємо на введення користувача
}
char fileName[12];
Serial.readBytes(fileName, sizeof(fileName));
fileName[strcspn(fileName, "\r\n")] = '\0';
File file = SD.open(fileName);
if (file) {
Serial.println(F("Зміст файлу:"));
while (file.available()) {
Serial.write(file.read());
}
Serial.print(F("\nРозмір файлу: "));
Serial.println(file.size());
file.close();
} else {
Serial.println(F("Не вдалося відкрити файл для читання."));
}
}