Problema nuovo software arduino versione 1.6.1

Buongiorno ragazzi,
ho installato la nuova versione 1.6.1 del compilatore. Ho provato a compilare uno codice che con la vecchia versione funzionava correttamente e mi ha il seguente errore:

rogetto_Casa_Master_1_6.ino: In function 'void loop()':
Progetto_Casa_Master_1_6.ino:372:43: error: ambiguous overload for 'operator=' (operand types are 'String' and 'char')
Progetto_Casa_Master_1_6.ino:372:43: note: candidates are:
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:222:0,
                from C:\Users\amico.adamo\Documents\Arduino\libraries\secTimer/secTimer.h:35,
                from Progetto_Casa_Master_1_6.ino:1:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:86:11: note: String& String::operator=(const String&)
 String & operator = (const String &rhs);
          ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:87:11: note: String& String::operator=(const char*)
 String & operator = (const char *cstr);
          ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:88:11: note: String& String::operator=(const __FlashStringHelper*)
 String & operator = (const __FlashStringHelper *str);
          ^
Progetto_Casa_Master_1_6.ino:387:35: error: ambiguous overload for 'operator=' (operand types are 'String' and 'char')
Progetto_Casa_Master_1_6.ino:387:35: note: candidates are:
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:222:0,
                from C:\Users\amico.adamo\Documents\Arduino\libraries\secTimer/secTimer.h:35,
                from Progetto_Casa_Master_1_6.ino:1:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:86:11: note: String& String::operator=(const String&)
 String & operator = (const String &rhs);
          ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:87:11: note: String& String::operator=(const char*)
 String & operator = (const char *cstr);
          ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:88:11: note: String& String::operator=(const __FlashStringHelper*)
 String & operator = (const __FlashStringHelper *str);
          ^
Progetto_Casa_Master_1_6.ino:407:35: error: ambiguous overload for 'operator=' (operand types are 'String' and 'char')
Progetto_Casa_Master_1_6.ino:407:35: note: candidates are:
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:222:0,
                from C:\Users\amico.adamo\Documents\Arduino\libraries\secTimer/secTimer.h:35,
                from Progetto_Casa_Master_1_6.ino:1:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:86:11: note: String& String::operator=(const String&)
 String & operator = (const String &rhs);
          ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:87:11: note: String& String::operator=(const char*)
 String & operator = (const char *cstr);
          ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:88:11: note: String& String::operator=(const __FlashStringHelper*)
 String & operator = (const __FlashStringHelper *str);
          ^
Progetto_Casa_Master_1_6.ino:425:35: error: ambiguous overload for 'operator=' (operand types are 'String' and 'char')
Progetto_Casa_Master_1_6.ino:425:35: note: candidates are:
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:222:0,
                from C:\Users\amico.adamo\Documents\Arduino\libraries\secTimer/secTimer.h:35,
                from Progetto_Casa_Master_1_6.ino:1:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:86:11: note: String& String::operator=(const String&)
 String & operator = (const String &rhs);
          ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:87:11: note: String& String::operator=(const char*)
 String & operator = (const char *cstr);
          ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:88:11: note: String& String::operator=(const __FlashStringHelper*)
 String & operator = (const __FlashStringHelper *str);
          ^
Progetto_Casa_Master_1_6.ino:443:35: error: ambiguous overload for 'operator=' (operand types are 'String' and 'char')
Progetto_Casa_Master_1_6.ino:443:35: note: candidates are:
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:222:0,
                from C:\Users\amico.adamo\Documents\Arduino\libraries\secTimer/secTimer.h:35,
                from Progetto_Casa_Master_1_6.ino:1:
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:86:11: note: String& String::operator=(const String&)
 String & operator = (const String &rhs);
          ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:87:11: note: String& String::operator=(const char*)
 String & operator = (const char *cstr);
          ^
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:88:11: note: String& String::operator=(const __FlashStringHelper*)
 String & operator = (const __FlashStringHelper *str);

Non capisco che errore c’è, probabilmete con le librerie. Qualcuno può darmi una mano a capire come risolvere il problema?
Dove posso scaricare la vecchia versione del compilatore?
Grazie

Mi portate piú sfere di cristallo possibile.
Ciao Uwe

Ciao Uwe,
si lo so che tu non puoi capire il problema non avendo il codice. Ho inserito l'errore, pensando che fosse qualcosa che probabilmente si è verificato anche ad altri con questa nuova versione.
La cosa che non capisco è che in teoria questa nuova versione del compilatore dovrebbe apportare solo miglioramenti e non casini.
Tra la vecchia versione e questa nuova cosa'è cambiato?

Sai dove posso scaricare la vecchia versione e reinstallare il vecchio compilatore?

Grazie

Magari se ci riporti il codice (... mi raccomando, racchiuso tra gli appositi tag CODE come spiegato al punto 7 del regolamento) .... riusciamo a vedere cosa c'è ed a suggerirti una correzione visto che ... comunque l'IDE va avanti e occorre aggiornarsi !

Guglielmo

P.S.: Anzi, cortesemente edita anche il tuo primo post e racchiudi quegli errori tra i tag CODE !

Premesso che a me NON lo compila neanche con la 1.0.6 né con la 1.6.0 (trova un errore di assegnazione tra una String ed un char oltre svariati altri errori) ... comunque, le vecchie versioni del IDE le trovi QUI ... vedi un po' tu ... :roll_eyes:

Guglielmo

Lo sketch che hai allegato è incompleto...

E mi sembra pure giusto che ti da errore !!!

La while vuole una espressione che ritorni TRUE o FALSE quindi ... non puoi metterci dentro un assegnazione (=), ma devi metterci una comparazione (==) che da un risultato boolean !

Dal reference :

Syntax

[ltr][color=#4f4e4e]while(expression){

// statement(s)
}
[/color][/ltr]
[ltr]Parameters[/ltr]
[ltr]expression - a (boolean) C statement that evaluates to true or false[/ltr][/quote]

Guglielmo

Ciao,
io l'assegnazione (=) l'ho creata nel ciclo if else dopo il ciclo while, non nel ciclo while.

Infatti ho provato a sostituire la riga inserendo memoriaPriorita_2[index_m2] = " ";
al posto di memoriaPriorita_2[index_m2]=(char)NULL; e l'errore sparisce.

Quindi credo che il problema è nel (char)NULL, non capisco il motivo.

Stai mischiando gestione stringhe classiche (array terminati da null o '\0' ) con gli oggetti String.

String memoriaPriorita_2[numeroMaxStringhePerArrayMemoria]={};

Infatti l'errore parla di operatore = e il compilatore non sà quale operatore = utilizzare in quel pezzo perchè ci sono molti candidati a disposizione. Probabilmente la classe String nei nuovi IDE è stata ampliata con nuovi operatori che portano il compilatore a non capire quel che vuoi fare in quella istruzione. E sinceramente NON capisco neppure io quel che stai cercando di fare in quel pezzo di codice.

Già la dichiarazione non ha senso. Se tra quadre dai la dimensione, non ha senso inizializzare 0 elementi con doppia graffa. Se lo fai devi dare il numero di elementi giusto.

adamo:
Ciao,
io l'assegnazione (=) l'ho creata nel ciclo if else dopo il ciclo while, non nel ciclo while.

Hai ragione non avevo capito a quale riga ti riferivi, anche perché ... un pezzo di codice buttato li così non da neanche modo di essere provato e verificato.

Metti SEMPRE l'intero codice o noi non possiamo provare a compilare, verificare e magari proporre soluzioni.

Guglielmo