void setup() {
Serial.begin(115200);
// 0x60 0x5E 0x62 0xC4 0x72 0x95 0x62
uint8_t byte0 = 0x5E;
uint8_t byte1 = 0X62;
uint8_t byte2 = 0XC4;
// Risulatato sbagliato, promozione implicita ad int che cmq non sufficiente
int32_t rawData = (byte0 << 16) | (byte1 << 8) | byte2;
Serial.println(rawData);
// Risultato sbagliato, promozione esplicita ad int ed il risultato è lo stesso
rawData = ((int)byte0 << 16) | (byte1 << 8) | byte2;
Serial.println(rawData);
// Risultato corretto
rawData = ((int32_t)byte0 << 16) | (byte1 << 8) | byte2;
Serial.println(rawData);
// Andiamo sul sicuro con tutti i byte?
rawData = ((int32_t)byte0 << 16) | ((int32_t)byte1 << 8) | (int32_t)byte2;
Serial.println(rawData);
float temperature = (rawData / 16777216.0) * 130.0 - 20.0;
Serial.println(temperature, 2);
}
void loop() {
// put your main code here, to run repeatedly:
}