@@ -5,6 +5,7 @@ uint8_t registerReadbackValue = 0;
55uint16_t magFieldBx, magFieldBy, magFieldBz, temperature;
66int16_t magFieldBxSigned, magFieldBySigned, magFieldBzSigned, temperatureSigned;
77double magFieldBxInMilliTesla, magFieldByInMilliTesla, magFieldBzInMilliTesla, temperatureInDegreeCelsius;
8+ double norm, theta, phi;
89uint8_t frameCounter;
910char data[400 ];
1011
@@ -14,7 +15,7 @@ void setup() {
1415 mv300sensori2c.setClockFrequency (400000 );
1516 Serial.begin (115200 , SERIAL_8N1);
1617 while (!Serial){}// wait for serial port to connect. Needed for native USB
17- mv300sensori2c.writeRegister (16 , 4 , 0 ); // Set TRIGMODE=1 (Trigger measurement after write or read frame), BRANGE=0 (±250mT)
18+ mv300sensori2c.writeRegister (16 , 4 , 0 ); // Set TRIGMODE=1 (I2C quick read mode: Trigger measurement after write or read frame), BRANGE=0 (±250mT)
1819 mv300sensori2c.writeRegister (17 , 1 , 0 ); // Set MODE = 1 (Host Controlled Mode)
1920 for (uint8_t i=0 ;i<20 ;++i) {
2021 registerReadbackValue=mv300sensori2c.readRegister (i, 0 );
@@ -26,7 +27,7 @@ void setup() {
2627
2728void loop () {
2829 delayMicroseconds (175 ); // wait for the previous conversion to finish
29- mv300sensori2c.readMagneticComponents (&magFieldBx, &magFieldBy, &magFieldBz, &temperature, &frameCounter);
30+ mv300sensori2c.readMagneticComponents (&magFieldBx, &magFieldBy, &magFieldBz, &temperature, &frameCounter, 1 );
3031 magFieldBxSigned=twosComplement (magFieldBx, 12 );
3132 magFieldBySigned=twosComplement (magFieldBy, 12 );
3233 magFieldBzSigned=twosComplement (magFieldBz, 12 );
@@ -35,6 +36,7 @@ void loop() {
3536 magFieldByInMilliTesla=convertMagneticFieldFromLsbToMilliTesla (magFieldBySigned, 0 );
3637 magFieldBzInMilliTesla=convertMagneticFieldFromLsbToMilliTesla (magFieldBzSigned, 0 );
3738 temperatureInDegreeCelsius=convertTemperatureFromLsbToDegreeCelsius (temperatureSigned);
38- sprintf (data, " Bx = % 8.3f mT, By = % 8.3f mT, Bz = % 8.3f mT, Temperature = % 6.1f °C, frame = %u" , magFieldBxInMilliTesla, magFieldByInMilliTesla, magFieldBzInMilliTesla, temperatureInDegreeCelsius, frameCounter);
39+ computeNormThetaPhi (magFieldBxInMilliTesla, magFieldByInMilliTesla, magFieldBzInMilliTesla, &norm, &theta, &phi);
40+ sprintf (data, " Bx [mT]:%+8.3f, By [mT]:%+8.3f, Bz [mT]:%+8.3f, Temperature [°C]:%+6.1f, frame:%u, Norm [mT]:%+8.3f, Theta [°]:%+8.3f, Phi [°]:%+8.3f" , magFieldBxInMilliTesla, magFieldByInMilliTesla, magFieldBzInMilliTesla, temperatureInDegreeCelsius, frameCounter, norm, theta, phi);
3941 Serial.println (data);
4042}
0 commit comments