Skip to content

Commit 87fb0e3

Browse files
committed
improve the examples, add more functions and fix some bugs
1 parent 46c2dac commit 87fb0e3

File tree

5 files changed

+144
-78
lines changed

5 files changed

+144
-78
lines changed

examples/read-magnetic-fields-with-i2c/read-magnetic-fields-with-i2c.ino

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ uint8_t registerReadbackValue = 0;
55
uint16_t magFieldBx, magFieldBy, magFieldBz, temperature;
66
int16_t magFieldBxSigned, magFieldBySigned, magFieldBzSigned, temperatureSigned;
77
double magFieldBxInMilliTesla, magFieldByInMilliTesla, magFieldBzInMilliTesla, temperatureInDegreeCelsius;
8+
double norm, theta, phi;
89
uint8_t frameCounter;
910
char 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

2728
void 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
}

examples/read-magnetic-fields-with-spi/read-magnetic-fields-with-spi.ino

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@ uint8_t registerReadbackValue = 0;
77
uint16_t magFieldBx, magFieldBy, magFieldBz, temperature;
88
int16_t magFieldBxSigned, magFieldBySigned, magFieldBzSigned, temperatureSigned;
99
double magFieldBxInMilliTesla, magFieldByInMilliTesla, magFieldBzInMilliTesla, temperatureInDegreeCelsius;
10+
double norm, theta, phi;
1011
uint8_t frameCounter;
1112
char data[400];
1213

1314
void setup() {
14-
mv300sensorspi.begin(spiSclkClockFrequency, SPI_MODE3, spiChipSelectPin);
15+
mv300sensorspi.begin(spiSclkClockFrequency, SPI_MODE0, spiChipSelectPin);
1516
Serial.begin(115200, SERIAL_8N1);
1617
while(!Serial){}//wait for serial port to connect. Needed for native USB
17-
mv300sensorspi.writeRegister(16, 4, 0); //Set TRIGMODE=1 (Trigger measurement after write or read frame), BRANGE=0 (±250mT)
18+
mv300sensorspi.writeRegister(16, 0, 0); //Set TRIGMODE=0 (not used with SPI), BRANGE=0 (±250mT)
1819
mv300sensorspi.writeRegister(17, 1, 0); //Set MODE = 1 (Host Controlled Mode)
1920
for(uint8_t i=0;i<20;++i) {
2021
registerReadbackValue=mv300sensorspi.readRegister(i, 0);
@@ -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
}

keywords.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ writeRegisterWithCrcCheck KEYWORD2
3636
twosComplement KEYWORD2
3737
convertMagneticFieldFromLsbToMilliTesla KEYWORD2
3838
convertTemperatureFromLsbToDegreeCelsius KEYWORD2
39+
computeNormThetaPhi KEYWORD2
3940

4041
#######################################
4142
# Instances (KEYWORD2)

0 commit comments

Comments
 (0)