compass4  2.0.0.0
Main Page

Compass 4 click

Compass 4 Click is a compact add-on board that can measure the three-axis magnetic field that is perfect for implementation in applications such as electric compasses.

click Product page


Click library

  • Author : MikroE Team
  • Date : Sep 2020.
  • Type : I2C/SPI type

Software Support

We provide a library for the Compass4 Click as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.

Package can be downloaded/installed directly form compilers IDE(recommended way), or downloaded from our LibStock, or found on mikroE github account.

Library Description

This library contains API for Compass4 Click driver.

Standard key functions :

  • Config Object Initialization function.

    void compass4_cfg_setup ( compass4_cfg_t *cfg );

  • Initialization function.

    COMPASS4_RETVAL compass4_init ( compass4_t *ctx, compass4_cfg_t *cfg );

Example key functions :

  • Gets INT pin state (DRDY pin)

    uint8_t compass4_get_interrupt ( compass4_t *ctx );

  • Gets single axis value

    uint8_t compass4_get_single_axis ( compass4_t *ctx, uint8_t axis_reg, int16_t *axis_data );

  • Gets magnetic flux of X\Y\Z axis value

    uint8_t compass4_get_magnetic_flux ( compass4_t *ctx, compass4_flux_t *flux );

Examples Description

This demo application measures magnetic flux data.

The demo application is composed of two sections :

Application Init

Initializes the driver and resets the module, then checks the communication with the module and sets the module default configuration.

void application_init ( void )
{
log_cfg_t log_cfg;
uint8_t device;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, "---- Application Init ----" );
// Click initialization.
COMPASS4_MAP_MIKROBUS( cfg, MIKROBUS_1 );
compass4_init( &compass4, &cfg );
Delay_ms( 500 );
device = compass4_check_device( &compass4 );
if ( device == 0 )
{
log_printf( &logger, ">> Device communication [ OK ] \r\n" );
}
else
{
log_printf( &logger, ">> Device communication [ ERROR ] \r\n" );
for ( ; ; );
}
log_printf( &logger, ">> Start measurement \r\n" );
}

Application Task

Reads magnetic flux data and displays the values of X, Y, and Z axis to the USB UART each second.

void application_task ( void )
{
uint8_t err;
err = compass4_get_magnetic_flux( &compass4, &flux );
if ( err != 0 )
{
log_printf( &logger, ">> Measurement error \r\n" );
}
else
{
log_printf( &logger, ">> Magnetic flux data << \r\n" );
log_printf( &logger, ">> X: %.2f \r\n", flux.x );
log_printf( &logger, ">> Y: %.2f \r\n", flux.y );
log_printf( &logger, ">> Z: %.2f \r\n", flux.z );
}
log_printf( &logger, "-----------------------------\r\n" );
Delay_ms( 1000 );
}

The full application code, and ready to use projects can be installed directly form compilers IDE(recommneded) or found on LibStock page or mikroE GitHub accaunt.

Other mikroE Libraries used in the example:

  • MikroSDK.Board
  • MikroSDK.Log
  • Click.Compass4

Additional notes and informations

Depending on the development board you are using, you may need USB UART click, USB UART 2 Click or RS232 Click to connect to your PC, for development systems with no UART to USB interface available on the board. The terminal available in all Mikroelektronika compilers, or any other terminal application of your choice, can be used to read the message.


compass4_flux_t::y
float y
Definition: compass4.h:244
compass4_init
COMPASS4_RETVAL compass4_init(compass4_t *ctx, compass4_cfg_t *cfg)
Initialization function.
COMPASS4_CTRL1_WM_STEPS_5
#define COMPASS4_CTRL1_WM_STEPS_5
Definition: compass4.h:133
compass4_cfg_t
Click configuration structure definition.
Definition: compass4.h:291
compass4_cfg_setup
void compass4_cfg_setup(compass4_cfg_t *cfg)
Config Object Initialization function.
COMPASS4_CTRL1_NOISE_ENABLE
#define COMPASS4_CTRL1_NOISE_ENABLE
Definition: compass4.h:162
application_task
void application_task(void)
Definition: main.c:83
compass4_flux_t::z
float z
Definition: compass4.h:245
COMPASS4_CTRL2_MODE_CONT_1
#define COMPASS4_CTRL2_MODE_CONT_1
Definition: compass4.h:171
compass4_check_device
uint8_t compass4_check_device(compass4_t *ctx)
Check device function.
compass4_flux_t
Definition: compass4.h:241
compass4_get_magnetic_flux
uint8_t compass4_get_magnetic_flux(compass4_t *ctx, compass4_flux_t *flux)
Gets magnetic flux of X\Y\Z axis value.
compass4_configuration
void compass4_configuration(compass4_t *ctx, uint8_t cfg1, uint8_t cfg2)
Configuration function.
COMPASS4_CTRL2_SDR_LOW_NOISE
#define COMPASS4_CTRL2_SDR_LOW_NOISE
Definition: compass4.h:179
compass4_hardware_reset
void compass4_hardware_reset(compass4_t *ctx)
Hardware reset function.
application_init
void application_init(void)
Definition: main.c:34
COMPASS4_CTRL2_FIFO_ENABLE
#define COMPASS4_CTRL2_FIFO_ENABLE
Definition: compass4.h:180
COMPASS4_MAP_MIKROBUS
#define COMPASS4_MAP_MIKROBUS(cfg, mikrobus)
Definition: compass4.h:54
compass4_flux_t::x
float x
Definition: compass4.h:243