c2x2rgb 2.1.0.0
Main Page

2x2 RGB click

‍2x2 RGB Click is a compact add-on board that contains a matrix of 4 “intelligent” RGB elements, forming a 2x2 display screen. This board features the KTD2052A, a 12-channel RGB LED driver from Kinetic Technologies. It is a fully programmable current regulator for up to four RGB LEDs (12 LEDs in total). The LED matrix consists of four LRTB GFTG, a 6-lead in-line MULTILEDs, from ams OSRAM. The LEDs have a 120-degree viewing angle.

click Product page


Click library

  • Author : Mikroe Team
  • Date : Sep 2023.
  • Type : I2C type

Software Support

We provide a library for the 2x2 RGB 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 2x2 RGB Click driver.

Standard key functions :

Example key functions :

  • c2x2rgb_set_rgb_led 2x2 RGB set RGB LED function.
    err_t c2x2rgb_set_rgb_led ( c2x2rgb_t *ctx, uint8_t led_num, uint16_t ired, uint16_t igrn, uint16_t iblu );
    err_t c2x2rgb_set_rgb_led(c2x2rgb_t *ctx, uint8_t led_num, uint16_t ired, uint16_t igrn, uint16_t iblu)
    2x2 RGB set RGB LED function.
  • c2x2rgb_set_control 2x2 RGB set control function.
    err_t c2x2rgb_set_control ( c2x2rgb_t *ctx, uint8_t en_mode, uint8_t be_en,
    uint8_t ce_temp, uint8_t fade_rate );
    err_t c2x2rgb_set_control(c2x2rgb_t *ctx, uint8_t en_mode, uint8_t be_en, uint8_t ce_temp, uint8_t fade_rate)
    2x2 RGB set control function.

Example Description

‍This example demonstrates the use of the 2x2 RGB Click board™ by controlling the color of the LEDs [1-4].

The demo application is composed of two sections :

Application Init

‍Initialization of SPI module and log UART. After driver initialization, the app executes a default configuration.

void application_init ( void )
{
log_cfg_t log_cfg;
c2x2rgb_cfg_t c2x2rgb_cfg;
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
c2x2rgb_cfg_setup( &c2x2rgb_cfg );
C2X2RGB_MAP_MIKROBUS( c2x2rgb_cfg, MIKROBUS_1 );
if ( I2C_MASTER_ERROR == c2x2rgb_init( &c2x2rgb, &c2x2rgb_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
if ( C2X2RGB_ERROR == c2x2rgb_default_cfg ( &c2x2rgb ) )
{
log_error( &logger, " Default configuration." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
log_printf( &logger, "----------------" );
Delay_ms ( 100 );
}
@ C2X2RGB_ERROR
Definition c2x2rgb.h:278
#define C2X2RGB_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition c2x2rgb.h:213
void application_init(void)
Definition main.c:33

Application Task

‍This simple example shows all LEDs in different colors. These LEDs actually consist of three single-colored LEDs (Red, Green and Blue) in a single package. Various colors can be reproduced by mixing the intensity of each LED.

void application_task ( void )
{
log_printf( &logger, "\r\nRED: " );
for ( uint8_t led_pos = C2X2RGB_SET_LD1; led_pos <= C2X2RGB_SET_LD4; led_pos++ )
{
if ( C2X2RGB_OK == c2x2rgb_set_rgb_led( &c2x2rgb, led_pos, DEMO_LED_CURRENT,
{
log_printf( &logger, "LD%d ", ( uint16_t ) led_pos );
}
Delay_ms ( 200 );
}
log_printf( &logger, "\r\nGREEN: " );
for ( uint8_t led_pos = C2X2RGB_SET_LD1; led_pos <= C2X2RGB_SET_LD4; led_pos++ )
{
{
log_printf( &logger, "LD%d ", ( uint16_t ) led_pos );
}
Delay_ms ( 200 );
}
log_printf( &logger, "\r\nBLUE: " );
for ( uint8_t led_pos = C2X2RGB_SET_LD1; led_pos <= C2X2RGB_SET_LD4; led_pos++ )
{
{
log_printf( &logger, "LD%d ", ( uint16_t ) led_pos );
}
Delay_ms ( 200 );
}
log_printf( &logger, "\r\nWHITE: " );
for ( uint8_t led_pos = C2X2RGB_SET_LD1; led_pos <= C2X2RGB_SET_LD4; led_pos++ )
{
if ( C2X2RGB_OK == c2x2rgb_set_rgb_led( &c2x2rgb, led_pos, DEMO_LED_CURRENT,
{
log_printf( &logger, "LD%d ", ( uint16_t ) led_pos );
}
Delay_ms ( 200 );
}
log_printf( &logger, "\r\n----------------" );
}
@ C2X2RGB_OK
Definition c2x2rgb.h:277
#define C2X2RGB_SET_LD1
2x2 RGB LED selection data values.
Definition c2x2rgb.h:112
#define C2X2RGB_SET_LD4
Definition c2x2rgb.h:115
#define C2X2RGB_LED_CURRENT_OFF
2x2 RGB LED current setting data values.
Definition c2x2rgb.h:139
void application_task(void)
Definition main.c:71
#define DEMO_LED_CURRENT
Definition main.c:28

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.2x2RGB

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.