LED ring R click is a mikroBUS™ add-on board with a ring of 32 red LEDs driven by four 8-bit 74HC595 serial-in, parallel-out shift registers. The ring is 25mm in diameter. The click communicates with the target MCU through the mikroBUS™ SPI interface, with RST, CS, SCK, MISO and MOSI pins marked MR#, LAT, CLK, DSOUT, DSIN, respectively. Other LED colors will also be available. The board is designed to use either a 3.3V or 5V power supply only.
Type | LED Matrix |
Applications | Indicator lights or decorative installations |
On-board modules | 8-bit 74HC595 serial-in, parallel-out shift registers |
Key Features | Ring of 32 red LEDs, Four 74HC595 registers, 25mm diameter |
Key Benefits | Using 8-bit shift registers to drive an array of LEDs is simply good practice, because it leaves more available pins on the target MCU |
Interface | GPIO,SPI |
Input Voltage | 3.3V or 5V |
Compatibility | mikroBUS |
Click board size | L (57.15 x 25.4 mm) |
LED ring click is one of several click boards that employ 74HCP595 shift registers to drive LEDs. Rotary click use the same, as well as Bargraph click, 7-Seg click and 7x10 click.
Using 8-bit shift registers to drive an array of LEDs is simply good practice, because it leaves more available pins on the target MCU, allowing you to either use a cheaper, lower pin count main MCU, or use the leftover pins for other purposes.
The end result is a smaller, more cost effective design.
The following code snippet demonstrates different ways to communicate with the click and initializes a clockwork pattern with a single LED at a time.
1 sbit LRR_LAT at GPIOD_ODR.B13; 2 sbit LRR_RST at GPIOC_ODR.B2; 3 #include <stdint.h> 4 #include "led_ring_hw.h" 5 6 void main() 7 { 8 9 uint8_t test_bfr[4]; 10 uint8_t i = 0; 11 uint16_t var_time = 500; 12 uint32_t led = 0x00000001; 13 14 // set latch and reset pins as output 15 16 GPIO_Digital_Output(&GPIOD_BASE, _GPIO_PINMASK_13); 17 GPIO_Digital_Output(&GPIOC_BASE, _GPIO_PINMASK_2); 18 19 // initalize SPI 20 21 SPI3_Init_Advanced( _SPI_FPCLK_DIV16, _SPI_MASTER | _SPI_8_BIT | 22 _SPI_CLK_IDLE_LOW | _SPI_FIRST_CLK_EDGE_TRANSITION | 23 _SPI_MSB_FIRST | _SPI_SS_DISABLE | _SPI_SSM_ENABLE | 24 _SPI_SSI_1, &_GPIO_MODULE_SPI3_PC10_11_12); 25 26 led_ring_hal_init(); 27 led_ring_start(); 28 29 test_bfr[0] = 0xAA; 30 test_bfr[1] = 0xAA; 31 test_bfr[2] = 0xAA; 32 test_bfr[3] = 0xAA; 33 34 led_ring_hal_write(&test_bfr, 4); // demonstration of HAL write function 35 led_ring_latch(); 36 37 Delay_ms(1000); 38 39 led_ring_send_32 ( 0xFAFAFAFA ); // demonstration of writing 4 bytes 40 41 Delay_ms(2000); 42 led_ring_send_8 ( test_bfr[0] ); // writing one byte at a time 43 led_ring_send_8 ( test_bfr[0] ); 44 led_ring_send_8 ( test_bfr[0] ); 45 led_ring_send_8 ( test_bfr[0] ); 46 47 while (1) 48 { 49 led_ring_send_32 ( led ); // dot circling faster and faster 50 vDelay_ms(var_time); 51 led = led << 1; 52 if (led == 0) 53 { 54 led = 1; 55 i++; 56 if (i == 0) 57 var_time = 500; 58 else if (i == 1) 59 var_time = 250; 60 else if (i == 2) 61 var_time = 100; 62 else if (i == 3) 63 var_time = 50; 64 else if ( i == 4 ) 65 { 66 var_time = 500; 67 i = 0; 68 } 69 } 70 } 71 }
Code examples that demonstrate the usage of LED Ring click with MikroElektronika hardware, written for mikroC for ARM, PIC, and FT90x are available on Libstock.