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" );
}
#define COMPASS4_CTRL1_WM_STEPS_5
Definition compass4.h:147
#define COMPASS4_CTRL1_NOISE_ENABLE
Definition compass4.h:176
#define COMPASS4_CTRL2_MODE_CONT_1
Definition compass4.h:185
#define COMPASS4_CTRL2_FIFO_ENABLE
Definition compass4.h:194
#define COMPASS4_CTRL2_SDR_LOW_NOISE
Definition compass4.h:193
#define COMPASS4_MAP_MIKROBUS(cfg, mikrobus)
Definition compass4.h:68
void compass4_hardware_reset(compass4_t *ctx)
Hardware reset function.
void compass4_cfg_setup(compass4_cfg_t *cfg)
Config Object Initialization function.
uint8_t compass4_check_device(compass4_t *ctx)
Check device function.
COMPASS4_RETVAL compass4_init(compass4_t *ctx, compass4_cfg_t *cfg)
Initialization function.
void compass4_configuration(compass4_t *ctx, uint8_t cfg1, uint8_t cfg2)
Configuration function.
void application_init(void)
Definition main.c:34
Click configuration structure definition.
Definition compass4.h:306

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 );
}
uint8_t compass4_get_magnetic_flux(compass4_t *ctx, compass4_flux_t *flux)
Gets magnetic flux of X\Y\Z axis value.
void application_task(void)
Definition main.c:83
Definition compass4.h:256
float y
Definition compass4.h:258
float x
Definition compass4.h:257
float z
Definition compass4.h:259

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.