Lekce 14 – Arduino a SD karta – čteme data

V minulém díle jsme si ukázali, že není vůbec složité zapsat něco na kartu SD. Nyní si ukážeme jak s SD karty číst. Zapojení necháme tak jak bylo a v mém případě použijeme znovu Ethernet Shield.

Vzhledem k tomu, že budeme pouze číst z karty nepotřebujeme dalších součástek nýbrž pouze SD kartu. Na tuto si pro náš test nahrajeme nějaká data, které využijeme pro čtení. V mém případě jsem si vytvořil soubor text.txt, kam si např. v poznámkovém bloku napíše a uložíme do souboru nějaký text. Fantazii se v tomto případě meze klást nebudou.

Do Arduina si nahrajeme tento program:

Po nahrání programu a zapnutí Serial Monitoru se do okna vypíše náš obsah souboru text.txt. V mém případě se jedná o několik jmen zapsaných pod sebe.

Tak pokud vidíte svůj text tak jste soubor přečetli. Nyní si trošku změníme zdrojový kód pro Arduino. Dostáváme se k příkladu, kdy bude chtít zobrazit pouze vybraný řádek:

V kódu nám přibyla jedna proměnná “radek” a několik podmínek. Ta první: když při čtení narazíme na znak nového řádku (v ASCII #13) tak k proměnné radek přičteme číslo jedna. To nám vlastně počítá řádky. Další podmínka je, že do Serial Monitoru budeme vypisovat znaky, když bude pozice čtení na řádku 4 a zároveň se nebude jednat o nějaký řídící znak (Enter, apod. – čitelné znaky – tisknutelné mají ASCII od 33, ale to se můžete podívat někde na internetu sami, když si do vyhledávače zadáte ASCII tabulka). V mém případě se do okna Serial Monitoru zobrazí obsah 4 řádku ze souboru, kde mám napsané jméno Jana.

Tohoto lze využít v případě, že chceme ze souboru přečíst nějakou jednu hodnotu a to poté v programu využít (různé nastavení apod.).

Knihovna obsahuje ještě další funkce, které můžeme využít. Tady je přehled všech:

  • begin() – inicializuje kartu SD, jako proměná se může použít číslo CS pinu, např. SD.begin(4); vrací buď true nebo false – zaleží jestli se povedlo 🙂
  • exists() – testuje, zda soubor, existuje, např. SD.exists(“text.txt”); – opět pokud nalezne vrací true jinak false
  • mkdir() – vytvoří adresář, např. SD.mkdir(“adresar1/adresar2”); – když se povede vrací true
  • open() – otevře soubor, např. SD.open(“text.txt, FILE_READ); – otevře soubor text.txt pro čtení, v případě, že chceme zapisovat druhý parametr bude FILE_WRITE, funkce vrací objekt typu File, se kterým dále pracujeme.
  • remove() – odstraní soubor, př.: SD.remove(“text.txt”); – odstraní soubor text.txt – vrací true pokud se povede.
  • rmdir() – odstraní adresář – stejné jako u souboru

Teď si uvedeme funkce s objektem File, který vrací funkce SD.Open():

  • available() – vrací počet bajtů, z kterých je možno ze souboru ještě číst
  • close() – zavře soubor a zajistí, aby byly všechny data zapsána fyzicky na soubor – funkce nevrací nic
  • flush() –  zajistí, aby byly všechny data zapsána fyzicky na soubor
  • peek() – přečte a vrátí jen jeden byte ze souboru, ale zustane na té samé pozici
  • position() – vrátí aktuální pozici v souboru (long)
  • print() – zapíše data do souboru
  • println() – zapíše data do souboru a skočí na nový řádek
  • seek() – přejde na danou pozici v souboru
  • size() – vrací velikost souboru v bajtech
  • read() – přečte jeden bajt ze souboru
  • write() – zapíše data do souboru a vrátí počet bajtů zapsaných dat
  • isDirectory() – testuje, zda je to soubor nebo adresář
  • openNextFile() – vrací další soubor nebo adresář
  • rewindDirectory() – vrací se na první soubor v adresáři

Vlastní podrobný popis funkcí ohledně práci s SD kartou naleznete na tomto odkazu v originále (angličtina).

Translate »