duinozone.cz - Arduino a Raspberry fórum

Autor Téma: Sestaveni dinamického pole a načítání ruzně velkých dat do něj  (Přečteno 14 krát)

Offline ijacek.007

  • Bastlíř začátečník
  • *
  • Příspěvků: 1
    • blog.ijacek007.cz
Sestaveni dinamického pole a načítání ruzně velkých dat do něj
« kdy: Prosinec 08, 2018, 21:03:54 odpoledne »
Zdravím nějakou dobu se mi nedaří elegantně vyřešit problém dinamického přiřazení do pole. Najde se někdo kdo by mi byl schopný pomoci?

V ESP8266 načítám pomocí
<ESP8266HTTPClient.h>
<ArduinoJson.h>

data z webu ktere chci poté zobrazit na displeji mudulu

řetězec vypada nějak takto

{"rychlost":"5000","opakovani":"3","pocet":"4","n1":"Anetka","d1":"25.70°C +","n2":"kotel","d2":"57.56°C +","n3":"venku","d3":"3.20°C","n4":"Cas","d4":"20:41"}

Posilam parametry rychlost , opakovani , pocet a poté již samotné informace na displej kdy je vždy tvar nazev je n+číslo data z něj jsou d+číslo

na displeji tedy chci zobrazit 4 udaju z ukázky a to presneji teploty a cas ktere se co 5 vteřin překleslý a co 3 opakování načtou znovu.

Umím programem zobrazit všechny zaslane proměné problém je že je musím definovat ručně. Nemužu tedy na straně serveru ovlivnit že bych chtěl aktuálně posílat jen 3 místo 4 obrazovek aniž bych zase nepřeprogramoval celý displej.

Kód: [Vybrat]
       Serial.println("Vypisuji hodnoty na e-ink displej");
        float rychlost = json["rychlost"].as<float>();
        byte opakovani = json["opakovani"].as<byte>();
        byte pocet = json["pocet"].as<byte>();
/**/
        String  n1 = json["n1"].as<String>();
        String  d1 = json["d1"].as<String>();
        String  n2 = json["n2"].as<String>();
        String  d2 = json["d2"].as<String>();
        String  n3 = json["n3"].as<String>();
        String  d3 = json["d3"].as<String>();
        String  n4 = json["n4"].as<String>();
        String  d4 = json["d4"].as<String>();

/*
 
        int jmeno[pocet];
        int data[pocet];
       
        for(poc=0;poc<pocet;poc++){

        String text1 = String(poc) ;   
        String text2 = String("n");       
        String text3 = text2 + text1;   // spojeni retezcu

        String text4 = String("d");       
        String text5 = text4 + text1;   // spojeni retezcu


        String  ndp = json[text3].as<String>();
        String  ddp = json[text5].as<String>();
           
        char jmeno[poc] =  ndp;
        char data[poc] = ddp;
       
        }
         
*/

         for(poc=0;poc<opakovani;poc++){ 
         
          // předelat na ciklus !

  /**/
         display.clear();  // clear the display
         display.setTextAlignment(TEXT_ALIGN_RIGHT);
         lcddata(String(n1),String(d1));
         display.display();
         delay(rychlost);
       
         display.clear();  // clear the display
         display.setTextAlignment(TEXT_ALIGN_RIGHT);
         lcddata(String(n2),String(d2));
         display.display();
         delay(rychlost);

         display.clear();  // clear the display
         display.setTextAlignment(TEXT_ALIGN_RIGHT);
         lcddata(String(n3),String(d3));
         display.display();
         delay(rychlost);

          display.clear();  // clear the display
         display.setTextAlignment(TEXT_ALIGN_RIGHT);
         lcddata(String(n4),String(d4));
         display.display();
         delay(rychlost);
   
   
    /**/   
       
        }

Má otázka tedy zní jak dinamicky načítat data do pole a poté je z něj jednoduše zobrazovat? nejsem schoplný udělat cykl který by dinamicky vytvářel proměné a do nich načítal obsah ty poté vložil do pole. Mohl by mi někdo proísm poradit kde proklatě dělám chybu ?


Bloger a nadšený amaterský programátor nejen elektroniky. Všechny mé články o Arduinu najdete na mém blogu https://blog.ijacek007.cz/Arduino