Main Content


Read one sample of magnetic field from sensor

Add-On Required: This feature requires the MATLAB Support Package for Arduino Hardware add-on.



[magReadings,timestamp] = readMagneticField(sensorobj) returns one sample of the magnetic field data on x, y, and z axes read from the sensor in units of µT (microtesla) along with the timestamp. Timestamp is optional.


The readMagneticField function is available for the MPU9250, LSM9DS1, LSM303C, and ICM20948 sensors.


Read Magnetic Field

Create an Arduino object and include the I2C library.

a = arduino();

Or, you can explicitly specify it in the Libraries Name-Value pair while creating the Arduino object.

clear a;
a = arduino('COM4', 'Uno', 'Libraries', 'I2C');

Create the sensor object for the sensor in use.


The sample code and output in this example is for mpu9250 object. If you are using another sensor that supports readMagneticField function, use the corresponding sensor object.

sensorobj = mpu9250(a);

Return one sample of magnetic field data.

magReadings = readMagneticField(sensorobj)

magReadings =

   16.2797    9.1711  -19.0969

Input Arguments

collapse all

The sensor object.

Output Arguments

collapse all

The magnetic field value on x, y, and z axes read from the sensor.

The time at which MATLAB® receives magnetic field data from the sensor, specified as a datetime.

More About

collapse all

Code Generation Using MATLAB Function Block

  • Use readMagneticField in a MATLAB Function block with the Simulink® Support Package for Arduino® Hardware to generate code that can be deployed on Arduino Hardware.

  • Timestamp returned is always in seconds.

Version History

Introduced in R2019a