Wenn das nicht funktioniert, wäre es gut zu zeigen, was Du machst.
Das zusammensetzen der Zahl ist ja nur aus 4 Bytes ![]()
uint8_t rxBuf[] = {0xBD, 0xBF, 0xBE, 0x15, 0x59, 0x00, 0x00, 0x00};
uint32_t batteryVoltage;
void setup()
{
Serial.begin(115200);
Serial.println(F("\r\nStart...\r\n"));
for (byte b = 0; b < 8; b++)
{
Serial.print(F("DATA"));
Serial.print(b);
Serial.print(": 0x");
Serial.println(rxBuf[b], HEX);
}
batteryVoltage = rxBuf[4];
batteryVoltage += static_cast < uint32_t > (rxBuf[3]) << 8;
batteryVoltage += static_cast < uint32_t > (rxBuf[6]) << 16;
batteryVoltage += static_cast < uint32_t > (rxBuf[5]) << 24;
Serial.print(F("Batteriespannung: 0x"));
Serial.print(batteryVoltage, HEX);
Serial.print(" / ");
Serial.print(batteryVoltage / 100.0);
Serial.print('V');
}
void loop()
{}
Bei mir tuts:
04:46:20.351 -> Start...
04:46:20.351 ->
04:46:20.351 -> DATA0: 0xBD
04:46:20.351 -> DATA1: 0xBF
04:46:20.351 -> DATA2: 0xBE
04:46:20.351 -> DATA3: 0x15
04:46:20.351 -> DATA4: 0x59
04:46:20.351 -> DATA5: 0x0
04:46:20.351 -> DATA6: 0x0
04:46:20.351 -> DATA7: 0x0
04:46:20.351 -> Batteriespannung: 0x1559 / 54.65V