mirror of
https://dev.iopsys.eu/feed/iopsys.git
synced 2025-12-10 07:44:50 +01:00
gryphon-led-module: modify transmission routine according to SK9822 spec
This commit is contained in:
parent
8f0df36664
commit
ab558792a0
1 changed files with 12 additions and 16 deletions
|
|
@ -56,31 +56,27 @@ int sk9822_set_color_str(struct sk9822_leds *sk9822, const char *hex)
|
|||
int sk9822_update(struct sk9822_leds *sk9822)
|
||||
{
|
||||
uint16_t i;
|
||||
uint8_t *rawarray = (uint8_t *)sk9822->led_colors;
|
||||
uint16_t led_count = sk9822->led_count;
|
||||
|
||||
sk9822_bb_write(sk9822, 0x00); // Start Frame
|
||||
// Start Frame
|
||||
sk9822_bb_write(sk9822, 0x00);
|
||||
sk9822_bb_write(sk9822, 0x00);
|
||||
sk9822_bb_write(sk9822, 0x00);
|
||||
sk9822_bb_write(sk9822, 0x00);
|
||||
|
||||
for (i = 0; i < (led_count*3); i += 3) {
|
||||
for (i = 0; i < led_count; i++) {
|
||||
cRGB *p = &sk9822->led_colors[i];
|
||||
sk9822_bb_write(sk9822, 0xe0+sk9822->led_brightness); // Maximum global brightness
|
||||
sk9822_bb_write(sk9822, rawarray[i+0]);
|
||||
sk9822_bb_write(sk9822, rawarray[i+1]);
|
||||
sk9822_bb_write(sk9822, rawarray[i+2]);
|
||||
sk9822_bb_write(sk9822, p->b);
|
||||
sk9822_bb_write(sk9822, p->g);
|
||||
sk9822_bb_write(sk9822, p->r);
|
||||
}
|
||||
|
||||
// Reset frame - Only needed for SK9822, has no effect on APA102
|
||||
sk9822_bb_write(sk9822, 0x00);
|
||||
sk9822_bb_write(sk9822, 0x00);
|
||||
sk9822_bb_write(sk9822, 0x00);
|
||||
sk9822_bb_write(sk9822, 0x00);
|
||||
|
||||
// End frame: 8+8*(leds >> 4) clock cycles
|
||||
for (i = 0; i < led_count; i += 16) {
|
||||
sk9822_bb_write(sk9822, 0xff); // 8 more clock cycles
|
||||
}
|
||||
// End frame
|
||||
sk9822_bb_write(sk9822, 0xff);
|
||||
sk9822_bb_write(sk9822, 0xff);
|
||||
sk9822_bb_write(sk9822, 0xff);
|
||||
sk9822_bb_write(sk9822, 0xff);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue