scrivere leggere in eeprom esterna una viarbile maggiore 255

devi inserire un ritardo tra le scritture

  int setTempc = 275 ;

  eeprom.writeByte(485, highByte(setTempc));
  delay(5);
  eeprom.writeByte(485 + 1, lowByte(setTempc));

  delay(10);
  setTempc = (eeprom.readByte(485) * 256) + eeprom.readByte(485 + 1);
  Serial.println(setTempc,DEC);

Brunello: non credo che il delay c'entri qualche cosa ... ::slight_smile:
... quello che è sicuro che se moltiplichi il risultato BYTE di una funzione per 256, di sicuro vai in OVERFLOW ! :smiling_imp:

Guglielmo

Questa non l'ho capita...
perchè questa di seguito è errata ?

  byte numero1 = 11 ;
  byte numero2 = 12 ;
  
  int Temp = ( numero1 * 256 ) + numero2 ;

... mmm ... effettivamente, essendo la destinazione un tipo "int" ... probabilmente il compilatore fa da solo il casting di numero1 e numero2 ::slight_smile: ... ma NON giurerei che funziona nel 100% dei possibili casi, specie con mix di operazioni.

Per sicurezza un "cast" in più non fa mai male ...

>Astro: La tua opinione ? ? ?

Guglielmo

Ho trovato la spiegazione ... ;D
... per le variabili di tipo intero, effettivamente, il compilatore fa una "type promotion" (byte -> int) in base alla variabile di destinazione, ma ... come dicevo ... questo NON è affatto vero sempre e basta che la destinazione sia un "float" e tale "type promotion" non avviene ...

int a = 10000;
int b = 5000;
float c;

c = (a * 10) + b;

... prova questa e ... divertiti a vedere che risultato da :grin:

Da cui ... in caso di tipi misti, NON fidatevi ed usate sempre il "cast", eviterete brutte sorprese.

Guglielmo

Ho trovato la spiegazione.........

Vero