Fehlerhafte I2C Adresse in SenseBoxMCU.h

Hallo SenseBox Team,
prüft doch bitte mal die Definition BMX055_MAGN_ADDR in der Datei SenseBoxMCU.h Diese ist derzeit mit „#define BMX055_MAGN_ADDR 0x10“ festgelegt.
Wenn ich mit folgenden kurzen Programmteil den I2C Bus scanne meldet sich das Magnetometer auf 0x12
In der senseBoxIO ist auch mit „#define I2C_MAGNET (0x12) // BMX055“ festgelegt

  //
  // Scan I2C bus #1
  //
  Wire1.begin();
  Serial.println("\nScanning I2C bus #1 ...");
  for (byte address = 1; address < 127; address++)
  {
    Wire1.beginTransmission(address);
    byte error = Wire1.endTransmission();
    if (error == 0)
    {
      String sensor = String("\tFound sensor at 0x") + String(address, HEX);
      Serial.print(sensor);
      switch (address)
      {
        case (BMX055_MAGN_ADDR):    // 0x10
          Serial.print(" BMX055 magnetometer 0x10"); 
          break;
        case (I2C_MAGNET):          // 0x12
          Serial.print(" BMX055 magnetometer 0x12");       
          break;
//      case (I2C_ACCEL):           // 0x18
        case (BMX055_ACCL_ADDR):    // 0x18
          Serial.print(" BMX055 accelerometer");       
          break;
        case (I2C_ATECC):           // 0x60
          Serial.println(" ATECC ATSAMD21G18A");       
          break;
//      case (I2C_GYRO):            // 0x76
        case (BMX055_GYRO_ADDR):    // 0x76
          Serial.print(" BMX055 gyroscop");       
          break;
        default:
          Serial.println();      
          break; 
      }
    }
    else if(error == 4)
    {
      Serial.print("\tUnknow error at 0x");
      Serial.println(address, HEX);
    }
  }
  Serial.println("...scan finished");  

Die Original Funktion BMX055::getMagnet liefert auch keine Werte zurück. Erst wenn die Adresse 0x12 verwendet wird antwortet der Bus
void BMX055::getMagnet(int *x, int *y, int *z)
{
Serial.print("BMX055 MAG: „); // debug
for (int i = 0; i < 6; i++)
{
// Start I2C Transmission
Wire1.beginTransmission(BMX055_MAGN_ADDR);
// Select data register
Wire1.write((66 + i));
// Stop I2C Transmission
Wire1.endTransmission();
// Request 1 byte of data
Wire1.requestFrom(BMX055_MAGN_ADDR, 1);
// Read 6 bytes of data
// xMag lsb, xMag msb, yMag lsb, yMag msb, zMag lsb, zMag msb
if (Wire1.available() == 1)
{
_data[i] = Wire1.read();
Serial.print(String(_data[i], HEX)); // debug
Serial.print(“ "); //debug
}
}
Serial.println(); // debug

// Convert the data
int xMag = ((_data[1] * 256) + (_data[0] & 0xF8)) / 8;
if (xMag > 4095)
	xMag -= 8192;
*x = xMag;

int yMag = ((_data[3] * 256) + (_data[2] & 0xF8)) / 8;
if (yMag > 4095)
	yMag -= 8192;
*y = yMag;

int zMag = ((_data[5] * 256) + (_data[4] & 0xFE)) / 2;
if (zMag > 16383)
	zMag -= 32768;
*z = zMag;

}

Viele Grüße
Bernd

Hi @no01b,

danke ich hab das als Issue aufgenommen und behebe es in der nächsten Version der Bibliothek!

Beste Grüße
Mario