reordering LEDs: almost there
This commit is contained in:
parent
3bf2dafcbf
commit
fbdfb326e0
105
ledcontroller.c
105
ledcontroller.c
@ -29,29 +29,89 @@ static uint16_t ledbuffer[NUM_LED_CHANNELS];
|
||||
|
||||
static int8_t map_lednum_to_channels(uint8_t lednum, uint8_t *channel_r, uint8_t *channel_g, uint8_t *channel_b)
|
||||
{
|
||||
uint8_t ret;
|
||||
uint8_t ret=0;
|
||||
|
||||
if (lednum < 15) {
|
||||
*channel_r = 3*lednum;
|
||||
*channel_g = 3*lednum+1;
|
||||
*channel_b = 3*lednum+2;
|
||||
if ( lednum >= 10 ) {
|
||||
*channel_r += 2;
|
||||
*channel_g += 2;
|
||||
*channel_b += 2;
|
||||
}
|
||||
else if ( lednum >= 5 ) {
|
||||
*channel_r += 1;
|
||||
*channel_g += 1;
|
||||
*channel_b += 1;
|
||||
}
|
||||
if (lednum < 14) {
|
||||
ret = 1;
|
||||
}
|
||||
else {
|
||||
switch (lednum) {
|
||||
case 0:
|
||||
*channel_r = 13;
|
||||
*channel_g = 14;
|
||||
*channel_b = 15;
|
||||
break;
|
||||
case 1:
|
||||
*channel_r = 33;
|
||||
*channel_g = 34;
|
||||
*channel_b = 35;
|
||||
break;
|
||||
case 2:
|
||||
*channel_r = 36;
|
||||
*channel_g = 37;
|
||||
*channel_b = 38;
|
||||
break;
|
||||
case 3:
|
||||
*channel_r = 45;
|
||||
*channel_g = 46;
|
||||
*channel_b = 47;
|
||||
break;
|
||||
case 4:
|
||||
*channel_r = 42;
|
||||
*channel_g = 43;
|
||||
*channel_b = 44;
|
||||
break;
|
||||
case 5:
|
||||
*channel_r = 39;
|
||||
*channel_g = 40;
|
||||
*channel_b = 41;
|
||||
break;
|
||||
case 6:
|
||||
*channel_r = 29;
|
||||
*channel_g = 30;
|
||||
*channel_b = 31;
|
||||
break;
|
||||
case 7:
|
||||
*channel_r = 26;
|
||||
*channel_g = 27;
|
||||
*channel_b = 28;
|
||||
break;
|
||||
case 8:
|
||||
*channel_r = 23;
|
||||
*channel_g = 24;
|
||||
*channel_b = 25;
|
||||
break;
|
||||
case 9:
|
||||
*channel_r = 20;
|
||||
*channel_g = 21;
|
||||
*channel_b = 22;
|
||||
break;
|
||||
case 10:
|
||||
*channel_r = 17;
|
||||
*channel_g = 18;
|
||||
*channel_b = 19;
|
||||
break;
|
||||
case 11:
|
||||
*channel_r = 10;
|
||||
*channel_g = 11;
|
||||
*channel_b = 12;
|
||||
break;
|
||||
case 12:
|
||||
*channel_r = 4;
|
||||
*channel_g = 5;
|
||||
*channel_b = 6;
|
||||
break;
|
||||
case 13:
|
||||
*channel_r = 7;
|
||||
*channel_g = 8;
|
||||
*channel_b = 9;
|
||||
break;
|
||||
default:
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -157,9 +217,9 @@ void led_flush(void)
|
||||
write_no_command(ledbuffer[channel+16]);
|
||||
write_data_latch(ledbuffer[channel+32]);
|
||||
}
|
||||
write_no_command(ledbuffer[NUM_LED1642GW_CHANNELS-3]);
|
||||
write_no_command(ledbuffer[NUM_LED1642GW_CHANNELS-2]);
|
||||
write_global_latch(ledbuffer[NUM_LED1642GW_CHANNELS-1]);
|
||||
write_no_command(ledbuffer[NUM_LED_CHANNELS-3]);
|
||||
write_no_command(ledbuffer[NUM_LED_CHANNELS-2]);
|
||||
write_global_latch(ledbuffer[NUM_LED_CHANNELS-1]);
|
||||
|
||||
}
|
||||
|
||||
@ -173,3 +233,8 @@ void ledcontroller_set_channel(uint8_t channel, uint16_t value)
|
||||
}
|
||||
|
||||
|
||||
void ledcontroller_clear(void)
|
||||
{
|
||||
memset(ledbuffer, 0x00, sizeof(ledbuffer));
|
||||
led_flush();
|
||||
}
|
||||
|
@ -24,6 +24,8 @@ void led_flush(void);
|
||||
void ledcontroller_turn_all_on(void);
|
||||
void ledcontroller_turn_all(void);
|
||||
void ledcontroller_set_channel(uint8_t channel, uint16_t value);
|
||||
void ledcontroller_clear(void);
|
||||
|
||||
|
||||
|
||||
#endif // LEDCONTROLLER_H
|
||||
|
@ -24,37 +24,40 @@ void rgbyteclock(void)
|
||||
|
||||
while (1) {
|
||||
PORTC ^= (1<<PC5);
|
||||
for (int i=0; i<15; i++) {
|
||||
for (int i=0; i<14; i++) {
|
||||
led_set(i, 0x7ff, 0x00, 0x00);
|
||||
led_flush();
|
||||
timer_wait(500);
|
||||
timer_wait(1000);
|
||||
}
|
||||
for (int i=0; i<15; i++) {
|
||||
led_set(i, 0x00, 0x00, 0x00);
|
||||
}
|
||||
led_flush();
|
||||
/* for (int i=0; i<14; i++) { */
|
||||
/* led_set(i, 0x00, 0x00, 0x00); */
|
||||
/* } */
|
||||
/* led_flush(); */
|
||||
ledcontroller_clear();
|
||||
timer_wait(100);
|
||||
|
||||
for (int i=0; i<15; i++) {
|
||||
for (int i=0; i<14; i++) {
|
||||
led_set(i, 0x00, 0x7ff, 0x00);
|
||||
led_flush();
|
||||
timer_wait(500);
|
||||
timer_wait(1000);
|
||||
}
|
||||
for (int i=0; i<15; i++) {
|
||||
led_set(i, 0x00, 0x00, 0x00);
|
||||
}
|
||||
led_flush();
|
||||
/* for (int i=0; i<14; i++) { */
|
||||
/* led_set(i, 0x00, 0x00, 0x00); */
|
||||
/* } */
|
||||
/* led_flush(); */
|
||||
ledcontroller_clear();
|
||||
timer_wait(100);
|
||||
|
||||
for (int i=0; i<15; i++) {
|
||||
for (int i=0; i<14; i++) {
|
||||
led_set(i, 0x00, 0x00, 0x7ff);
|
||||
led_flush();
|
||||
timer_wait(500);
|
||||
timer_wait(1000);
|
||||
}
|
||||
for (int i=0; i<15; i++) {
|
||||
led_set(i, 0x00, 0x00, 0x00);
|
||||
}
|
||||
led_flush();
|
||||
/* for (int i=0; i<14; i++) { */
|
||||
/* led_set(i, 0x00, 0x00, 0x00); */
|
||||
/* } */
|
||||
/* led_flush(); */
|
||||
ledcontroller_clear();
|
||||
timer_wait(100);
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user