Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: kobzolek 18. 09. 2015, 10:25:33

Název: Arduino SD karta soubor setting.txt
Přispěvatel: kobzolek 18. 09. 2015, 10:25:33
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----------------------------------------------------------------------
Název: Re:Arduino SD karta soubor setting.txt
Přispěvatel: ToJeJedno 18. 09. 2015, 11:44:34
u nas se tomuhle http://lnk.sk/3J5 nerika cili papricka ale sisa :)
Název: Re:Arduino SD karta soubor setting.txt
Přispěvatel: kobzolek 18. 09. 2015, 11:49:25
Ne ne pěstuji chilli. Za tohle by mě přítelkyně asi vystěhovala :-)   
Název: Re:Arduino SD karta soubor setting.txt
Přispěvatel: strepty 18. 09. 2015, 15:15:25
Arduino ma aj EEPROM, nie je moc velka (512B) ale mozno by ste sd kartu nepotreboval.
Inak neviem presne na co sa pytate,  ale nechcete kazdej rastlinke priradit IP adresu ze ;-) ?
Název: Re:Arduino SD karta soubor setting.txt
Přispěvatel: fahacz 18. 09. 2015, 22:22:30
Inicializovat ethernet, pri init lze urcit statickou ip adresu, masku, branu i MAC.
Zrejme precist nastaveni z SD karty a predet je EthernetBegin.
https://www.arduino.cc/en/Reference/EthernetBegin

Odbocim, zaujal me ten projekt, trochu se ujizdim take na chilli paprickach, co vsechno to ma umet, funkce a tak, mozna bych se pripojil nebo postavil svuj klon. Diky F.
Název: Re:Arduino SD karta soubor setting.txt
Přispěvatel: kobzolek 18. 09. 2015, 23:23:02
Moc dík prostuduji a vyzkouším.
Jelikož bydlím zatím v bytě, kde se chilli moc nedaří tak mě napadlo udělat pěstírnu kde se budu snažit nasimulovat vhodné podmínky. Je to také důvod se trošku naučit programovat arduino. Mé požadavky jsou časové spínáni led osvětlení, řízení přívodu a odvodu vzduchu, ofuk, hlídaní teploty topení plus klimatizace (pomoci peltiérová článku), hlídání vlhkosti, automatické zavlažování. Vše chci ovládat s PC, Mobilu a Internetu.
Není problém se domluvit na spolupráci 
Název: Re:Arduino SD karta soubor setting.txt
Přispěvatel: kobzolek 19. 09. 2015, 18:46:13
Dokázal jsem s SD karty ze souboru setting.txt vytáhnout první řádek (ip 192,168,0,17) a poslat tuto hodnotu přes sériové rozhraní na PC. Jenže tuto hodnotu ip potřebuji nějak dostat do proměnné a použít v tomto kódu Ethernet.begin(mac, ip); poradí mi někdo jak na to? Předem moc děkuji     

 // 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");