Thumbstick click
Thumbstick click is a high precision input device. It features a dual axis, spring return, pushbutton enabled joystick (similar to the ones used on joypads on popular gaming consoles), and a MCP3204 12-bit A/D converter.
It features a dual axis, spring return, pushbutton enabled joystick, and a MCP3204 12-bit A/D converter.
click Product page
Click library
- Author : Katarina Perendic
- Date : okt 2019.
- Type : SPI type
Software Support
We provide a library for the Thumbstick 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 Thumbstick Click driver.
Standard key functions :
- Config Object Initialization function.
void thumbstick_cfg_setup ( thumbstick_cfg_t *cfg );
- Initialization function.
THUMBSTICK_RETVAL thumbstick_init ( thumbstick_t *ctx, thumbstick_cfg_t *cfg );
Example key functions :
Examples Description
The demo application shows clickboard axis postioning and button state.
The demo application is composed of two sections :
Application Init
Initialization of click board's and log's objects.
{
log_cfg_t log_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, "---- Application Init ----" );
timer_cnt = 0;
change_state = false;
}
#define POSTION_SENS_DEFAULT
Definition thumbstick.h:124
#define THUMBSTICK_MAP_MIKROBUS(cfg, mikrobus)
Definition thumbstick.h:66
void thumbstick_get_position(thumbstick_t *ctx, thumbstick_position_t *position)
Get thumbstick position by axis function.
uint8_t thumbstick_set_sensitivity(uint16_t sensitivity)
Set thumbstick sensitivity.
uint8_t thumbstick_button_state(thumbstick_t *ctx)
Get state of thumbstick button function.
void thumbstick_cfg_setup(thumbstick_cfg_t *cfg)
Config Object Initialization function.
THUMBSTICK_RETVAL thumbstick_init(thumbstick_t *ctx, thumbstick_cfg_t *cfg)
Initialization function.
void application_init(void)
Definition main.c:47
Click configuration structure definition.
Definition thumbstick.h:163
Application Task
>It reads the position of the thumbstick:
- You will get data on log on every change of thumbstick axis position, or if you hold thumbstick in one postion it will repeat the same log when timer reaches timeout.
- You will get data on log whenever you press thumbstick button and release it.
{
if ( old_butt_state != button_state )
{
{
log_printf( &logger, ">> Button is pressed \r\n" );
Delay_ms ( 100 );
}
else
{
log_printf( &logger, ">> Button is released \r\n" );
Delay_ms ( 100 );
}
old_butt_state = button_state;
}
if ( ( old_pos.vertical != thumbstick_pos.vertical ) || ( timer_cnt >=
TIMER_FLAG ) )
{
{
log_printf( &logger, ">> TOP \r\n" );
change_state = true;
}
{
log_printf( &logger, ">> BOTTOM \r\n" );
change_state = true;
}
old_pos = thumbstick_pos;
}
if ( (old_pos.horizontal != thumbstick_pos.horizontal ) || ( timer_cnt >=
TIMER_FLAG ) )
{
{
log_printf( &logger, ">> LEFT \r\n" );
change_state = true;
}
{
log_printf( &logger, ">> RIGHT \r\n" );
change_state = true;
}
old_pos = thumbstick_pos;
}
if ( ( timer_cnt >=
TIMER_FLAG ) || ( change_state ==
true ) )
{
timer_cnt = 0;
change_state = false;
}
timer_cnt++;
Delay_ms ( 1 );
}
#define THUMBSTICK_POSITION_TOP
Definition thumbstick.h:106
#define THUMBSTICK_POSITION_BOTTOM
Definition thumbstick.h:108
#define THUMBSTICK_POSITION_LEFT
Definition thumbstick.h:109
#define THUMBSTICK_POSITION_RIGHT
Definition thumbstick.h:107
void application_task(void)
Definition main.c:79
#define TIMER_FLAG
Definition main.c:41
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.Thumbstick
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.