The Example3_AngleCalculations.ino example file can be accessed from the File > Examples > SparkFun TMAG5273 Arduino Library > Example3_AngleCalculations drop-down menu. This example demonstrates one of the advanced features of the TMAG5273; it enables a CORDIC engine to calculate the angle of a magnet rotating about the z-axis.
Example3_AngleCalculations.inoCode Verification
This code was last verified to be functional under the following parameters:
Arduino IDE Version: 2.2.1
Arduino Library Version: 1.0.3
Hardware Platform:
- SparkFun RedBoard Plus
- SparkFun Linear 3D Hall-Effect Sensor - TMAG5273 (Qwiic)
- SparkFun Mini Linear 3D Hall-Effect Sensor - TMAG5273 (Qwiic)
#include<Wire.h> // Used to establish serial communication on the I2C bus#include"SparkFun_TMAG5273_Arduino_Library.h" // Used to send and recieve specific information from our sensor// Create a new sensor objectTMAG5273sensor;// I2C default addressuint8_ti2cAddress=TMAG5273_I2C_ADDRESS_INITIAL;// Set constants for setting up deviceuint8_tconversionAverage=TMAG5273_X32_CONVERSION;uint8_tmagneticChannel=TMAG5273_XYX_ENABLE;uint8_tangleCalculation=TMAG5273_XY_ANGLE_CALCULATION;voidsetup(){Wire.begin();// Start serial communication at 115200 baudSerial.begin(115200);// Begin example of the magnetic sensor code (and add whitespace for easy reading)Serial.println("TMAG5273 Example 3: Angle Calculations");Serial.println("");// If begin is successful (0), then start exampleif(sensor.begin(i2cAddress,Wire)==true){Serial.println("Begin");}else// Otherwise, infinite loop{Serial.println("Device failed to setup - Freezing code.");while(1);// Runs forever}// Set the device at 32x average mode sensor.setConvAvg(conversionAverage);// Choose new angle to calculate from// Can calculate angles between XYX, YXY, YZY, and XZXsensor.setMagneticChannel(magneticChannel);// Enable the angle calculation register// Can choose between XY, YZ, or XZ prioritysensor.setAngleEn(angleCalculation);}voidloop(){if((sensor.getMagneticChannel()!=0)&&(sensor.getAngleEn()!=0))// Checks if mag channels are on - turns on in setup{floatangleCalculation=sensor.getAngleResult();Serial.print("XYX: ");Serial.print(angleCalculation,4);Serial.println("°");}else{Serial.println("Mag Channels disabled, stopping..");while(1);}delay(1000);}
Hardware Connections
For this example, users simply need to connect their Qwiic Hall-Effect Sensor board to their microcontroller, utilizing the I2C interface. With the recommended hardware, users can easily connect their boards with the Qwiic connection system.
For users with a development board without a Qwiic connector, the table below illustrates the required pin connections. Make sure that the logic-level of the sensor is compatible with the development board that is being connected.
Sensor Pin
Microcontroller Pin
RedBoard/Uno
SCL
I2C - Serial Clock
SCL/A5
SDA
I2C - Serial Data
SDA/A4
3V3
Power: 1.7 to 3.6V
3.3V
GND
Ground
GND
Serial Monitor
This example enables the CORDIC engine to calculate the angle of a magnet rotating about the z-axis, which is then displayed in the Serial Monitor.
Tip
For this example to work, users should rotate a magnet's polarity about the z-axis of the TMAG5273 hall-effect sensor. Similar to how the magnetic knob is used for this stove top:
Warning
The casing of rare Earth magnets is often conductive. Users should take precautions to avoid shorting out the components or electrical contacts with these types of magnets.