mlvibrosens  2.1.0.0
Main Page

ML Vibro Sens Click

PRVIH_PAR_RECENICA_SA_PRODUCT_PAGE_DA_ISPRATE_CELINU

[Click Product page](CLICK_PRODUCT_PAGE_LINK)


Click library

  • Author : Stefan Filipovic
  • Date : Nov 2024.
  • Type : I2C type

Software Support

We provide a library for the ML Vibro Sens 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 from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on Mikroe github account.

Library Description

This library contains API for ML Vibro Sens Click driver.

Standard key functions :

Example key functions :

Example Description

This example demonstrates the use of the ML Vibro Sens Click board by capturing and logging

acceleration data on the X, Y, and Z axes, along with temperature readings. The data is output over USB UART and can be visualized in real-time using tools like SerialPlot. Additionally, the vibro motor state changes periodically, cycling through different vibration states for added feedback.

The demo application is composed of two sections :

Application Init

Initializes the communication interface and configures the ML Vibro Sens Click board

with default settings. This setup enables an interrupt on the INT pin when data is ready, sets the acceleration sensitivity to a +/-4G range, and sets the output data rate to 100 Hz.

void application_init ( void )
{
log_cfg_t log_cfg;
mlvibrosens_cfg_t mlvibrosens_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
mlvibrosens_cfg_setup( &mlvibrosens_cfg );
MLVIBROSENS_MAP_MIKROBUS( mlvibrosens_cfg, MIKROBUS_1 );
if ( I2C_MASTER_ERROR == mlvibrosens_init( &mlvibrosens, &mlvibrosens_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
if ( MLVIBROSENS_ERROR == mlvibrosens_default_cfg ( &mlvibrosens ) )
{
log_error( &logger, " Default configuration." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}

Application Task

Monitors the data-ready interrupt, retrieves acceleration and temperature data when available,

and logs it over USB UART in the format X;Y;Z;TEMP. After every 1000 data readings, the vibro motor state cycles through predefined states to demonstrate the motor's functionality.

void application_task ( void )
{
static uint8_t vibro_state = MLVIBROSENS_VIBRO_STATE_IDLE;
static uint16_t result_num = 0;
static mlvibrosens_data_t accel_data;
// Wait for a data ready interrupt
while ( mlvibrosens_get_int_pin ( &mlvibrosens ) );
if ( MLVIBROSENS_OK == mlvibrosens_get_data ( &mlvibrosens, &accel_data ) )
{
log_printf ( &logger, "%f;%f;%f;%d;\r\n", accel_data.x, accel_data.y,
accel_data.z, accel_data.temperature );
}
if ( ++result_num > 1000 )
{
result_num = 0;
if ( ++vibro_state > MLVIBROSENS_VIBRO_STATE_BOTH )
{
}
mlvibrosens_set_vibro_state ( &mlvibrosens, vibro_state );
}
}

Note

We recommend using the SerialPlot tool for data visualization. The temperature measurements

should be visualized independently. The data format for plotter is as follows: X;Y;Z;TEMP;

The full application code, and ready to use projects can be installed directly from NECTO Studio Package Manager(recommended way), downloaded from our LibStock™ or found on Mikroe github account.

Other Mikroe Libraries used in the example:

  • MikroSDK.Board
  • MikroSDK.Log
  • Click.MLVibroSens

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. UART terminal is available in all MikroElektronika compilers.


MLVIBROSENS_OK
@ MLVIBROSENS_OK
Definition: mlvibrosens.h:383
mlvibrosens_set_vibro_state
void mlvibrosens_set_vibro_state(mlvibrosens_t *ctx, uint8_t state)
ML Vibro Sens set vibro state function.
MLVIBROSENS_VIBRO_STATE_IDLE
#define MLVIBROSENS_VIBRO_STATE_IDLE
ML Vibro Sens vibro motor state setting.
Definition: mlvibrosens.h:284
mlvibrosens_cfg_t
ML Vibro Sens Click configuration object.
Definition: mlvibrosens.h:351
mlvibrosens_get_int_pin
uint8_t mlvibrosens_get_int_pin(mlvibrosens_t *ctx)
ML Vibro Sens get int1 pin function.
mlvibrosens_data_t::z
float z
Definition: mlvibrosens.h:372
application_task
void application_task(void)
Definition: main.c:75
mlvibrosens_data_t
ML Vibro Sens Click Axes data structure.
Definition: mlvibrosens.h:369
MLVIBROSENS_ERROR
@ MLVIBROSENS_ERROR
Definition: mlvibrosens.h:384
mlvibrosens_get_data
err_t mlvibrosens_get_data(mlvibrosens_t *ctx, mlvibrosens_data_t *data_out)
ML Vibro Sens get data function.
mlvibrosens_init
err_t mlvibrosens_init(mlvibrosens_t *ctx, mlvibrosens_cfg_t *cfg)
ML Vibro Sens initialization function.
mlvibrosens_default_cfg
err_t mlvibrosens_default_cfg(mlvibrosens_t *ctx)
ML Vibro Sens default configuration function.
mlvibrosens_data_t::x
float x
Definition: mlvibrosens.h:370
application_init
void application_init(void)
Definition: main.c:39
mlvibrosens_data_t::temperature
int8_t temperature
Definition: mlvibrosens.h:373
mlvibrosens_cfg_setup
void mlvibrosens_cfg_setup(mlvibrosens_cfg_t *cfg)
ML Vibro Sens configuration object setup function.
mlvibrosens_data_t::y
float y
Definition: mlvibrosens.h:371
MLVIBROSENS_MAP_MIKROBUS
#define MLVIBROSENS_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition: mlvibrosens.h:313
mlvibrosens_t
ML Vibro Sens Click context object.
Definition: mlvibrosens.h:328
MLVIBROSENS_VIBRO_STATE_BOTH
#define MLVIBROSENS_VIBRO_STATE_BOTH
Definition: mlvibrosens.h:287