weather con Mega e display della nextion

Ciao a tuti, mi servirebbe un aiuto. Sono due giorni che ci sbatto ma non so come risolvere.
Ho preso un tutorial sul sito della nextion un weather ho con le sue librerie e messo su arduino 1.8.1.
ho messo il programa in allegato perchè troppo lungo e non lo carica.
quando carico il programma sulla Mega mi da degli errori che non so come correggerli.

C:\Users\gianluca\AppData\Local\Temp\arduino_modified_sketch_18549\weather.ino: In function 'bool getCurrentConditions()':

weather:67: error: call of overloaded 'find(const char*&)' is ambiguous

while (!Serial1.find(conds[j])){

^

C:\Users\gianluca\AppData\Local\Temp\arduino_modified_sketch_18549\weather.ino:67:37: note: candidates are:

In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h:29:0,

from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:232,

from sketch\weather.ino.cpp:1:

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:71:8: note: bool Stream::find(char*)

bool find(char *target); // reads data from the stream until the target string is found

^

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:71:8: note: no known conversion for argument 1 from 'const char*' to 'char*'

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:72:8: note: bool Stream::find(uint8_t*)

bool find(uint8_t *target) { return find ((char *)target); }

^

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:72:8: note: no known conversion for argument 1 from 'const char*' to 'uint8_t* {aka unsigned char*}'

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:79:8: note: bool Stream::find(char)

bool find(char target) { return find (&target, 1); }

^

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:79:8: note: no known conversion for argument 1 from 'const char*' to 'char'

C:\Users\gianluca\AppData\Local\Temp\arduino_modified_sketch_18549\weather.ino: In function 'bool getForecast()':

weather:165: error: call of overloaded 'find(const char*&)' is ambiguous

while(!Serial1.find(forecast[j])){}

^

C:\Users\gianluca\AppData\Local\Temp\arduino_modified_sketch_18549\weather.ino:165:38: note: candidates are:

In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/HardwareSerial.h:29:0,

from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:232,

from sketch\weather.ino.cpp:1:

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:71:8: note: bool Stream::find(char*)

bool find(char *target); // reads data from the stream until the target string is found

^

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:71:8: note: no known conversion for argument 1 from 'const char*' to 'char*'

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:72:8: note: bool Stream::find(uint8_t*)

bool find(uint8_t *target) { return find ((char *)target); }

^

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:72:8: note: no known conversion for argument 1 from 'const char*' to 'uint8_t* {aka unsigned char*}'

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:79:8: note: bool Stream::find(char)

bool find(char target) { return find (&target, 1); }

^

C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:79:8: note: no known conversion for argument 1 from 'const char*' to 'char'

exit status 1
call of overloaded 'find(const char*&)' is ambiguous

questi sono gli errori.

weather.ino (15.1 KB)

Ora ho notato che se elimino due cicli FOR nel programma, elimino gli errori ma giustamente il programma non mi esegue le funzione
I due cicli FOR sono questi

    for( int j=0; j<num_elements;j++ ){
       while (!Serial1.find(conds[j])){
         timeout_current++;
         Serial.println(timeout_current);
         if(timeout_current==10){
           Serial.println("it is error");
           timeout_current=0;
           return false;
         }
       }
       String str1 = conds[j];
       for(int l=0;l<(str1.length());l++){
         json_current += str1[l];
       }
       while(i<60000){
         if(Serial1.available()){
           char c=Serial1.read();
           if(str1=="Date"){
                if(c== 0x0D ) break;
           }
           else{ 
             if(c==','|| c == 0x0d) break;
             if(c == 0x20) continue;
           }
           json_current +=c;
           i=0;
         }
         i++;
       }
       if(j==num_elements-1){
         json_current+='}';
       }
       else{
         json_current+=',';
       }
    }

questo è il secondo

 for(int j=0;j<num_elements_fr;j++){
      while(!Serial1.find(forecast[j])){}
      String str1=forecast_rename[j];
      for(int l=0;l<(str1.length());l++){
        json_forecast += str1[l];
      }
      while(i<60000){
        if(Serial1.available()){
          char c=Serial1.read();
          if (c==',' || c == '}') {break;}
          if(c == 0x09 || c == 0x20 || c == 0x0A ) {
            continue;
          }
          json_forecast += c;
          i=0;
        }
        i++;
      }
      if(j==num_elements_fr-1){
        json_forecast += '}';
      }
      else{
        json_forecast += ',';
      }
    }

Come posso fare per risolvere ?
Grazie mille

https://forum.arduino.cc/index.php?topic=389120.15

prova a guardare questo forum ..

>Matley74: essendo questo il tuo primo post nella sezione Italiana del forum, nel rispetto del regolamento di detta sezione (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

Scusate il mio silenzio, ho fatto la mia presentazione