Вопрос по работе с SD картой

Sikorskiy
Offline
Зарегистрирован: 25.04.2016

На карту все пишется исправно,
необходима лишь одна делать.

Как сделать так чтобы мое устройство определялось как флешка?
Сейчас чтобы достать записанный файл мне нужно вытащить из устройства флешку,
воткнуть в комп и увидеть файл.
А нужно чтобы при подключении ардуины через USB можно увидеть флешку не вынимая из устройства.

если програмно это не возможно то каким допольнительным железом это можно решить?

код текущей программы прилагаю.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <SD.h>

LiquidCrystal_I2C lcd(0x27,16,2);

#define sens A0
#define sensmq A1
const int chipSelect = 10;

void setup() {
Serial.begin(9600);
while (!Serial);
lcd.init();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Initializing ");
lcd.setCursor(0,1);
lcd.print("SD card...");
delay(1000);

if (!SD.begin(chipSelect))
{
lcd.setCursor(0,0);
lcd.print("Card failed,");
lcd.setCursor(0,1);
lcd.print("or not present.");
delay(1000);
return;
}

lcd.setCursor(11,1);
lcd.print("DONE");
delay(1000);
pinMode(sens, INPUT);
pinMode(sensmq, INPUT);

}

void loop() {
int data = analogRead(sens);
int data1 = analogRead(sensmq);

File dataFile = SD.open("datalog.txt", FILE_WRITE);

if (dataFile)
{
dataFile.print("CO ");
dataFile.print(data);
dataFile.print(" CH4 ");
dataFile.print(data1);
dataFile.print(" H2 ");
dataFile.print(data);
dataFile.print(" LPG ");
dataFile.println(data1);
dataFile.close();

}

else {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("error opening datalog.txt");
lcd.setCursor(0,1);
lcd.print("datalog.txt");
delay(1000);
}
lcd.setCursor(0,0);
lcd.print("CO ");
lcd.setCursor(data < 100 ? 6 : 5, 0);
lcd.print(data);
lcd.setCursor(0,1);
lcd.print("CH4 ");
lcd.setCursor(data1 < 100 ? 6 : 5, 1);
lcd.print(data1);
lcd.setCursor(9,0);
lcd.print("H2 ");
lcd.setCursor(data < 100 ? 14 : 13, 0);
lcd.print(data);
lcd.setCursor(9,1);
lcd.print("LPG ");
lcd.setCursor(data1 < 100 ? 14 : 13, 1);
lcd.print(data1);
delay(1000);
}

Cathexis
Cathexis аватар
Offline
Зарегистрирован: 01.02.2017

Все, что пришло на ум, так это сделать своего рода драйвер для твоей дуины, написанный в виде отдельного приложения на "пека", который будет общаясь через COM порт отправлять запросы о файлах на карте и перекачивать их на или с карты. Если извратиться, то можно будет передавать не только тексты, но я пока что не в курсе как

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Sikorskiy, по этой теме крайне мало готовых наработок. Наиболее известен бутлоадер "LUFA" c поддержкой масс-сторадж.  Позволяет заливать прошивки простым копированием файла на сэмулированную флешку. Есть вариация этого же бутлоадера с поддержкой SD-карт. Тыц. Наверное это почти то, что вам нужно. Но есть один нюанс - все эти библы не для ардуинщиков, так что учитесь, остваивайте атмел студию или аналогичные профессиональные программы :)