Ищу меню навигации по файловой системе SD-карты (UNO + LCD Keypad Shield 1602 + SD)...

SoftFelix
Offline
Зарегистрирован: 12.01.2020

Ищу меню навигации по файловой системе SD-карты (UNO + LCD Keypad Shield 1602 + SD)

Проверка наличия карты, правильного формата (FAT16/FAT32) информация по SD.

Хождение по дереву ФС кнопками навигации (вхождение в каталоги, выбор конкретного файла)

Наверняка кто-то ужЕ писал подобное. К сожалению не нашёл, хотя искал очень долго. Я совсем начинающий.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

$200

genia1991
Offline
Зарегистрирован: 25.12.2019

причем тут 200 баксов?

 

половника того что вы хотите сделать уже сделано в стандартном примере от SD

остальное есть на форуме arduino.cc . видел что то подобное.

сделать сразу не получится. надо пару месяцем посидеть и поучиться немного.

а вообще на ютубе где то был  готовый проэкс с исходниками. смотреть папки на sd еще что то. видел не давно

genia1991
Offline
Зарегистрирован: 25.12.2019

oled лучше будет экран. открыть картинку вы не сможете но файл показывать ардуино может что там она есть. проверка карты ее файл система список файлов на sd. размер карты и так далее.

вместо Serial.print поменять на экран

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

// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;

// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
// MKRZero SD: SDCARD_SS_PIN
const int chipSelect = 4;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.print("\nInitializing SD card...");

  // we'll use the initialization code from the utility libraries
  // since we're just testing if the card is working!
  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?");
    while (1);
  } else {
    Serial.println("Wiring is correct and a card is present.");
  }

  // print the type of card
  Serial.println();
  Serial.print("Card 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");
  }

  // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
  if (!volume.init(card)) {
    Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
    while (1);
  }

  Serial.print("Clusters:          ");
  Serial.println(volume.clusterCount());
  Serial.print("Blocks x Cluster:  ");
  Serial.println(volume.blocksPerCluster());

  Serial.print("Total Blocks:      ");
  Serial.println(volume.blocksPerCluster() * volume.clusterCount());
  Serial.println();

  // print the type and size of the first FAT-type volume
  uint32_t volumesize;
  Serial.print("Volume type is:    FAT");
  Serial.println(volume.fatType(), DEC);

  volumesize = volume.blocksPerCluster();    // clusters are collections of blocks
  volumesize *= volume.clusterCount();       // we'll have a lot of clusters
  volumesize /= 2;                           // SD card blocks are always 512 bytes (2 blocks are 1KB)
  Serial.print("Volume size (Kb):  ");
  Serial.println(volumesize);
  Serial.print("Volume size (Mb):  ");
  volumesize /= 1024;
  Serial.println(volumesize);
  Serial.print("Volume size (Gb):  ");
  Serial.println((float)volumesize / 1024.0);

  Serial.println("\nFiles found on the card (name, date and size in bytes): ");
  root.openRoot(volume);

  // list all files in the card with date and size
  root.ls(LS_R | LS_DATE | LS_SIZE);
}

void loop(void) {
}

 

negavoid
Offline
Зарегистрирован: 09.07.2016

genia1991 пишет:
сделать сразу не получится. надо пару месяцем посидеть и поучиться немного.

Правильно. Что будет есть ваша жена и дети, пока вы будете пару месяцев сидеть и учиться?

genia1991
Offline
Зарегистрирован: 25.12.2019

negavoid пишет:

genia1991 пишет:
сделать сразу не получится. надо пару месяцем посидеть и поучиться немного.

Правильно. Что будет есть ваша жена и дети, пока вы будете пару месяцев сидеть и учиться?

но потом будет возможность не только этот проэкт сделать. набраться опыта. научиться чему то новому а может и как хобби станет если через пару лет не работой . заниматься обучением в свободное время

negavoid
Offline
Зарегистрирован: 09.07.2016

Во, уже пара лет появилась. Давайте тогда сразу возьмём 5 лет, время обучения специалиста-электронщика в институте. И что, они обойдутся дешевле, чем $200 здесь и сейчас? :) И опять же, что будут есть дети эти пять лет, кто будет оплачивать их взросление, пока специалист обучается?

genia1991
Offline
Зарегистрирован: 25.12.2019

можно в телефон просто sd запихнуть. тоже вариант

negavoid
Offline
Зарегистрирован: 09.07.2016

И вполне себе бесплатный. Ведь ленчей даром не бывает - что-то хочется - либо учи и делай сам, трать на это своё время/деньги, либо плати тому, кто будет тратить своё время, причём его цену, а не твою.

Вот лично персонально вы, по моему мнению, после чтения ваших постов, потихонечку это осознаёте. Но этот форум не предназначен для переучивания мозгов с социализма на капитализм. :)

-NMi-
Offline
Зарегистрирован: 20.08.2018

genia1991 пишет:

сделать сразу не получится. надо пару месяцем посидеть и поучиться немного.

а вообще на ютубе где то был  готовый проэкс с исходниками.

Энта, давай, короче, садись за комп на пару месяцев и поучись. В марте отпишешься, чо и как получилося.

А в утубе - да, там тока чО нет, но это только для лохов слабоумных)))_)))