Close

Arduino SD karta soubor setting.txt

Úvodní stránka Fórum Software Jazyky Jazyk Wiring Arduino SD karta soubor setting.txt

Označeno štítky: 

Aktuálně jsou na stránce zobrazeny 2 příspěvky - 1. až 2. (celkem z 2)
  • Autor
    Příspěvky
  • #4631
    vaseks0001
    Účastník

    Dobrý den,
    Začínám se učit programovat v jazyce Wiring. Vymyslel jsem si takový projekt pěstírna na chilli papričky. Jako ovládačku jsem si vybral Arduino. Potřebuji, aby systém jel 24 hodin denně a spolehlivě. Podle mého názoru nějaké ovládačky s operačním systémem micro pc apod. jsou na toto hodně nevhodné. PLC zase pro změnu moc drahé a tak proto Arduino. Dokázal jsem inicializovat sd kartu kdy systém mi řekne, zda karta je připravená nebo nikoliv jako čtečku jsem použil ethernet shield. Jelikož kvůli paměti chci na sd kartu umístit soubor s nastavením například IP adresu Mac adresu atd. kterou v budoucnu budu moct upravovat přes síť. A také program už umí inicializovat soubor setting.txt na kartě, vypsat určitý řádek přes sériovou linku. Zaseknul jsem se u toho jak vložit určitý řádek třeba s ip adresou do nastavení síťové komunikace. Může mi někdo poradit jak na to? Vyjmout řádek uložit ho do proměnné třeba IP a tu použit v aplikaci. Ještě jsem zapomněl. Kód o šéfovat tak aby při výpadku sd karty byli nastaveny výchozí ip? Ani za boha na to nemohu přijít

    // ——————————————————————————-INICIALIZACE KARTA SD———————————————————————-
    // CS pro četčku karet na pinu 4
    Serial.print(„Inicializace SD karty…“);
    pinMode(4, OUTPUT);

    //zkontroluje inicializaci karty
    if (!SD.begin(chipSelect)) {
    Serial.println(„\nKarta nenalezena…“);
    return;
    }

    Serial.println(„\nKarta inicializovana…“);

    // otevře soubor setting.txt
    File dataFile = SD.open(„setting.txt“, FILE_READ);

    // když soubor existuje
    if (dataFile)
    {

    // Kdyz soubor existuje vypise hlasku nalezen
    Serial.println(„Soubor setting nalezen“);

    // inicializuje proměnou pro číslo řádku
    int radek = 1;

    // dokud nebudeme na konci souboru tak:
    while (dataFile.available())
    {
    // přečte jeden bajt (znak) a uloží do proměné data
    byte data = dataFile.read();

    // když jsou data znak #13 (Enter, nový řádek)
    if (data == 13)
    {

    // přičti k proměné řádek + 1
    radek++;
    }

    // když je číslo řádku 4
    // a
    // znak není „řídící“ (viz ASCI tabulka)-
    // pouze zobrazitelné znaky
    if (radek == 3 && data > 32)
    {

    // odešle byte (znak) na Serial Monitor

    Serial.write(data);

    }
    }
    // soubor opět zavřeme
    dataFile.close();
    }
    // Když soubor chybi
    else
    {
    // Když soubor chybi vypise hlasku soubor nenalezen
    Serial.println(„Nepodarilo se otevrit soubor setting“);

    }
    // ——————————————————————————-KONEC INICIALIZACE KARTA SD———————————————————————-

    #4954
    Vojtěch Vosáhlo
    Účastník

    Ahoj,
    odpověď na tvou 1. otázku

    Může mi někdo poradit jak na to? Vyjmout řádek uložit ho do proměnné třeba IP a tu použit v aplikaci.

    je docela jednoduchá. Využij funkci dataFile.position() a nebo dataFile.seek(). Tyto funkce udávají tvojí pozici v souboru. Jednoduše, pokud se podíváš do dokumentace ke knihovně SD najdeš jak na to, pak jednoduše použiješ dataFile.read(). Tím sice přečteš je 1 bajt ale když použiješ jednoduchou funkci for tak se můžeš po přečtení bajtu posunout o jednu pozici a přečíst další. Když přidáš nějakou podmínku a na konci znaky sloučíš dostaneš celou IP kterou můžeš použít. Druhou otázku nechápu úplně přesně. Myslíš to tak že pokud kartu vyndáš tak aby se IP nastavila na nějakou defaultní kterou si nastavíš? Pokud ano tak si zapiš do EEPROM procesouru svou základní IP a pak při každém psacím/čtecím cyklu zkusíš zda je karta vsunuta (SD.available()) a pokud není tak si můžeš IP přečíst a použít. Doufám že je to vše co si potřeboval a přeji hodně štěstí.

Aktuálně jsou na stránce zobrazeny 2 příspěvky - 1. až 2. (celkem z 2)
  • Pro reakci na toto téma se musíte přihlásit.