lotus: Refine LED mapping

Generated by led.py, of course.

Signed-off-by: Daniel Schaefer <dhs@frame.work>
This commit is contained in:
Daniel Schaefer 2022-12-27 17:18:38 +08:00
parent c2712f368b
commit bc5c1d7bb4
3 changed files with 236 additions and 125 deletions

View File

@ -70,118 +70,226 @@ const is31_led g_is31_leds[RGB_MATRIX_LED_COUNT] = {
* | | G location
* | | | B location
* | | | | */
{0, CS1_SW1, CS2_SW1, CS3_SW1}
// TODO: Probably have to order them by LED ID?
{0, CS1_SW1, CS2_SW1, CS3_SW1}, // LED 3
{0, CS1_SW2, CS2_SW2, CS3_SW2}, // LED 4
{0, CS1_SW3, CS2_SW3, CS3_SW3}, // LED 5
{0, CS1_SW4, CS2_SW4, CS3_SW4}, // LED 6
{0, CS1_SW5, CS2_SW5, CS3_SW5}, // LED 8
{0, CS1_SW6, CS2_SW6, CS3_SW6}, // LED 1
{0, CS1_SW7, CS2_SW7, CS3_SW7}, // LED 9
{0, CS1_SW8, CS2_SW8, CS3_SW8}, // LED 2
{0, CS1_SW9, CS2_SW9, CS3_SW9}, // LED 7
{0, CS4_SW1, CS5_SW1, CS6_SW1}, // LED 12
{0, CS4_SW2, CS5_SW2, CS6_SW2}, // LED 13
{0, CS4_SW3, CS5_SW3, CS6_SW3}, // LED 10
{0, CS4_SW4, CS5_SW4, CS6_SW4}, // LED 14
{0, CS4_SW5, CS5_SW5, CS6_SW5}, // LED 15
{0, CS4_SW6, CS5_SW6, CS6_SW6}, // LED 16
{0, CS4_SW7, CS5_SW7, CS6_SW7}, // LED 11
{0, CS4_SW8, CS5_SW8, CS6_SW8}, // LED 17
{0, CS4_SW9, CS5_SW9, CS6_SW9}, // LED 18
{0, CS7_SW1, CS8_SW1, CS9_SW1}, // LED 19
{0, CS7_SW2, CS8_SW2, CS9_SW2}, // LED 20
{0, CS7_SW3, CS8_SW3, CS9_SW3}, // LED 21
{0, CS7_SW4, CS8_SW4, CS9_SW4}, // LED 22
{0, CS7_SW5, CS8_SW5, CS9_SW5}, // LED 23
{0, CS7_SW6, CS8_SW6, CS9_SW6}, // LED 24
{0, CS7_SW7, CS8_SW7, CS9_SW7}, // LED 25
{0, CS7_SW8, CS8_SW8, CS9_SW8}, // LED 26
{0, CS7_SW9, CS8_SW9, CS9_SW9}, // LED 27
{0, CS10_SW1, CS11_SW1, CS12_SW1}, // LED 28
{0, CS10_SW2, CS11_SW2, CS12_SW2}, // LED 29
{0, CS10_SW3, CS11_SW3, CS12_SW3}, // LED 30
{0, CS10_SW4, CS11_SW4, CS12_SW4}, // LED 31
{0, CS10_SW5, CS11_SW5, CS12_SW5}, // LED 32
{0, CS10_SW6, CS11_SW6, CS12_SW6}, // LED 33
{0, CS10_SW7, CS11_SW7, CS12_SW7}, // LED 34
{0, CS10_SW8, CS11_SW8, CS12_SW8}, // LED 35
{0, CS10_SW9, CS11_SW9, CS12_SW9}, // LED 36
{0, CS13_SW1, CS14_SW1, CS15_SW1}, // LED 42
{0, CS13_SW2, CS14_SW2, CS15_SW2}, // LED 37
{0, CS13_SW3, CS14_SW3, CS15_SW3}, // LED 38
{0, CS13_SW4, CS14_SW4, CS15_SW4}, // LED 43
{0, CS13_SW5, CS14_SW5, CS15_SW5}, // LED 44
{0, CS13_SW6, CS14_SW6, CS15_SW6}, // LED 39
{0, CS13_SW7, CS14_SW7, CS15_SW7}, // LED 40
{0, CS13_SW8, CS14_SW8, CS15_SW8}, // LED 45
{0, CS13_SW9, CS14_SW9, CS15_SW9}, // LED 41
{0, CS16_SW1, CS17_SW1, CS18_SW1}, // LED 46
{0, CS16_SW2, CS17_SW2, CS18_SW2}, // LED 47
{0, CS16_SW3, CS17_SW3, CS18_SW3}, // LED 48
{1, CS19_SW12, CS20_SW12, CS21_SW12}, // LED 49
{1, CS19_SW13, CS20_SW13, CS21_SW13}, // LED 50
{1, CS19_SW14, CS20_SW14, CS21_SW14}, // LED 51
{1, CS19_SW15, CS20_SW15, CS21_SW15}, // LED 52
{1, CS19_SW16, CS20_SW16, CS21_SW16}, // LED 53
{1, CS19_SW17, CS20_SW17, CS21_SW17}, // LED 54
{1, CS19_SW18, CS20_SW18, CS21_SW18}, // LED 55
{1, CS19_SW19, CS20_SW19, CS21_SW19}, // LED 56
{1, CS19_SW20, CS20_SW20, CS21_SW20}, // LED 57
{1, CS22_SW12, CS23_SW12, CS24_SW12}, // LED 58
{1, CS22_SW13, CS23_SW13, CS24_SW13}, // LED 59
{1, CS22_SW14, CS23_SW14, CS24_SW14}, // LED 60
{1, CS22_SW15, CS23_SW15, CS24_SW15}, // LED 61
{1, CS22_SW16, CS23_SW16, CS24_SW16}, // LED 62
{1, CS22_SW17, CS23_SW17, CS24_SW17}, // LED 63
{1, CS22_SW18, CS23_SW18, CS24_SW18}, // LED 64
{1, CS22_SW19, CS23_SW19, CS24_SW19}, // LED 65
{1, CS22_SW20, CS23_SW20, CS24_SW20}, // LED 66
{1, CS25_SW12, CS26_SW12, CS27_SW12}, // LED 67
{1, CS25_SW13, CS26_SW13, CS27_SW13}, // LED 68
{1, CS25_SW14, CS26_SW14, CS27_SW14}, // LED 75
{1, CS25_SW15, CS26_SW15, CS27_SW15}, // LED 69
{1, CS25_SW16, CS26_SW16, CS27_SW16}, // LED 70
{1, CS25_SW17, CS26_SW17, CS27_SW17}, // LED 71
{1, CS25_SW18, CS26_SW18, CS27_SW18}, // LED 72
{1, CS25_SW19, CS26_SW19, CS27_SW19}, // LED 73
{1, CS25_SW20, CS26_SW20, CS27_SW20}, // LED 74
{1, CS28_SW12, CS29_SW12, CS30_SW12}, // LED 76
{1, CS28_SW13, CS29_SW13, CS30_SW13}, // LED 77
{1, CS28_SW14, CS29_SW14, CS30_SW14}, // LED 78
{1, CS28_SW15, CS29_SW15, CS30_SW15}, // LED 89
{1, CS28_SW16, CS29_SW16, CS30_SW16}, // LED 80
{1, CS28_SW17, CS29_SW17, CS30_SW17}, // LED 81
{1, CS28_SW18, CS29_SW18, CS30_SW18}, // LED 82
{1, CS28_SW19, CS29_SW19, CS30_SW19}, // LED 83
{1, CS28_SW20, CS29_SW20, CS30_SW20}, // LED 84
{1, CS31_SW12, CS32_SW12, CS33_SW12}, // LED 85
{1, CS31_SW13, CS32_SW13, CS33_SW13}, // LED 86
{1, CS31_SW14, CS32_SW14, CS33_SW14}, // LED 87
{1, CS31_SW15, CS32_SW15, CS33_SW15}, // LED 88
{1, CS31_SW16, CS32_SW16, CS33_SW16}, // LED 89
{1, CS31_SW17, CS32_SW17, CS33_SW17}, // LED 90
{1, CS31_SW18, CS32_SW18, CS33_SW18}, // LED 91
{1, CS31_SW19, CS32_SW19, CS33_SW19}, // LED 92
{1, CS31_SW20, CS32_SW20, CS33_SW20}, // LED 93
{1, CS34_SW12, CS35_SW12, CS36_SW12}, // LED 94
{1, CS34_SW13, CS35_SW13, CS36_SW13}, // LED 95
{1, CS34_SW14, CS35_SW14, CS36_SW14}, // LED 96
{1, CS34_SW15, CS35_SW15, CS36_SW15}, // LED 97
};
led_config_t g_led_config = { {
// Key Matrix to LED Index
{32, 73, 6, 85, 0, 30, 34, 78, 76, 81, 79, 0, 89, 80, 53, 0, },
{0, 0, 0, 48, 95, 28, 36, 77, 82, 33, 0, 0, 35, 91, 54, 68, },
{0, 0, 94, 0, 3, 20, 40, 41, 56, 0, 27, 0, 0, 64, 0, 92, },
{0, 47, 2, 0, 21, 22, 8, 9, 60, 0, 25, 75, 0, 0, 0, 71, },
{0, 0, 17, 0, 45, 42, 10, 15, 69, 0, 23, 0, 0, 62, 63, 0, },
{0, 0, 16, 0, 13, 14, 12, 11, 70, 0, 18, 0, 0, 61, 65, 0, },
{0, 0, 0, 0, 19, 4, 5, 7, 67, 0, 59, 90, 0, 58, 55, 0, },
{0, 0, 37, 0, 0, 26, 44, 50, 52, 0, 51, 0, 0, 49, 38, 0, },
{32, 73, 6, 85, 0, 30, 34, 78, 76, 81, 79, 0, 89, 80, 53, 0, },
{ 0, 0, 0, 48, 95, 28, 36, 77, 82, 33, 0, 0, 35, 91, 54, 68, },
{ 0, 0, 94, 0, 3, 20, 40, 41, 56, 0, 27, 0, 0, 64, 0, 92, },
{ 0, 47, 2, 0, 21, 22, 8, 9, 60, 0, 25, 75, 0, 0, 0, 71, },
{ 0, 0, 17, 0, 45, 42, 10, 15, 69, 0, 23, 0, 0, 62, 63, 0, },
{ 0, 0, 16, 0, 13, 14, 12, 11, 70, 0, 18, 0, 0, 61, 65, 0, },
{ 0, 0, 0, 0, 19, 4, 5, 7, 67, 0, 59, 90, 0, 58, 55, 0, },
{ 0, 0, 37, 0, 0, 26, 44, 50, 52, 0, 51, 0, 0, 49, 38, 0, },
}, {
// Key Matrix to LED Index
{ 11, 23 },
{ 0, 23 },
{ 57, 22 },
{ 41, 22 },
{ 73, 22 },
{ 25, 22 },
{ 121, 22 },
{ 89, 22 },
{ 105, 22 },
{ 82, 10 },
{ 114, 10 },
{ 66, 10 },
{ 50, 10 },
{ 34, 10 },
{ 98, 10 },
{ 18, 10 },
{ 2, 10 },
{ 130, 10 },
{ 56, 0 },
{ 40, 0 },
{ 72, 0 },
{ 24, 0 },
{ 88, 0 },
{ 10, 0 },
{ 104, 0 },
{ 0, 0 },
{ 120, 0 },
{ 38, 47 },
{ 22, 47 },
{ 54, 47 },
{ 5, 48 },
{ 70, 47 },
{ 1, 48 },
{ 86, 47 },
{ 0, 60 },
{ 102, 47 },
{ 30, 34 },
{ 62, 34 },
{ 7, 35 },
{ 94, 34 },
{ 110, 34 },
{ 46, 34 },
{ 13, 36 },
{ 78, 34 },
{ 1, 36 },
{ 8, 60 },
{ 38, 59 },
{ 54, 59 },
{ 174, 34 },
{ 126, 34 },
{ 142, 34 },
{ 158, 34 },
{ 190, 34 },
{ 205, 34 },
{ 202, 22 },
{ 219, 22 },
{ 223, 36 },
{ 185, 22 },
{ 137, 22 },
{ 153, 22 },
{ 169, 22 },
{ 162, 10 },
{ 194, 10 },
{ 178, 10 },
{ 209, 11 },
{ 222, 11 },
{ 181, 0 },
{ 136, 0 },
{ 168, 0 },
{ 146, 10 },
{ 199, 0 },
{ 186, 0 },
{ 213, 0 },
{ 224, 0 },
{ 152, 0 },
{ 166, 47 },
{ 118, 47 },
{ 134, 47 },
{ 150, 47 },
{ 182, 47 },
{ 197, 48 },
{ 202, 58 },
{ 203, 48 },
{ 217, 48 },
{ 150, 59 },
{ 108, 60 },
{ 121, 60 },
{ 134, 60 },
{ 166, 59 },
{ 183, 64 },
{ 202, 62 },
{ 220, 64 },
{ 222, 48 },
{ 22, 59 },
{ 70, 60 },
{ 83, 60 },
{ 95, 60 }
// LED Index to Physical Position
{ 11, 23 }, // LED 1
{ 0, 23 }, // LED 2
{ 57, 22 }, // LED 3
{ 41, 22 }, // LED 4
{ 73, 22 }, // LED 5
{ 25, 22 }, // LED 6
{ 121, 22 }, // LED 7
{ 89, 22 }, // LED 8
{ 105, 22 }, // LED 9
{ 82, 10 }, // LED 10
{ 114, 10 }, // LED 11
{ 66, 10 }, // LED 12
{ 50, 10 }, // LED 13
{ 34, 10 }, // LED 14
{ 98, 10 }, // LED 15
{ 18, 10 }, // LED 16
{ 2, 10 }, // LED 17
{ 130, 10 }, // LED 18
{ 56, 0 }, // LED 19
{ 40, 0 }, // LED 20
{ 72, 0 }, // LED 21
{ 24, 0 }, // LED 22
{ 88, 0 }, // LED 23
{ 10, 0 }, // LED 24
{ 104, 0 }, // LED 25
{ 0, 0 }, // LED 26
{ 120, 0 }, // LED 27
{ 38, 47 }, // LED 28
{ 22, 47 }, // LED 29
{ 54, 47 }, // LED 30
{ 5, 48 }, // LED 31
{ 70, 47 }, // LED 32
{ 1, 48 }, // LED 33
{ 86, 47 }, // LED 34
{ 0, 60 }, // LED 35
{ 102, 47 }, // LED 36
{ 30, 34 }, // LED 37
{ 62, 34 }, // LED 38
{ 7, 35 }, // LED 39
{ 94, 34 }, // LED 40
{ 110, 34 }, // LED 41
{ 46, 34 }, // LED 42
{ 13, 36 }, // LED 43
{ 78, 34 }, // LED 44
{ 1, 36 }, // LED 45
{ 8, 60 }, // LED 46
{ 38, 59 }, // LED 47
{ 54, 59 }, // LED 48
{ 174, 34 }, // LED 49
{ 126, 34 }, // LED 50
{ 142, 34 }, // LED 51
{ 158, 34 }, // LED 52
{ 190, 34 }, // LED 53
{ 205, 34 }, // LED 54
{ 202, 22 }, // LED 55
{ 219, 22 }, // LED 56
{ 223, 36 }, // LED 57
{ 185, 22 }, // LED 58
{ 137, 22 }, // LED 59
{ 153, 22 }, // LED 60
{ 169, 22 }, // LED 61
{ 162, 10 }, // LED 62
{ 194, 10 }, // LED 63
{ 178, 10 }, // LED 64
{ 209, 11 }, // LED 65
{ 222, 11 }, // LED 66
{ 181, 0 }, // LED 67
{ 136, 0 }, // LED 68
{ 168, 0 }, // LED 69
{ 146, 10 }, // LED 70
{ 199, 0 }, // LED 71
{ 186, 0 }, // LED 72
{ 213, 0 }, // LED 73
{ 224, 0 }, // LED 74
{ 152, 0 }, // LED 75
{ 166, 47 }, // LED 76
{ 118, 47 }, // LED 77
{ 134, 47 }, // LED 78
{ 150, 47 }, // LED 79
{ 182, 47 }, // LED 80
{ 197, 48 }, // LED 81
{ 202, 58 }, // LED 82
{ 203, 48 }, // LED 83
{ 217, 48 }, // LED 84
{ 150, 59 }, // LED 85
{ 108, 60 }, // LED 86
{ 121, 60 }, // LED 87
{ 134, 60 }, // LED 88
{ 166, 59 }, // LED 89
{ 183, 64 }, // LED 90
{ 202, 62 }, // LED 91
{ 220, 64 }, // LED 92
{ 222, 48 }, // LED 93
{ 22, 59 }, // LED 94
{ 70, 60 }, // LED 95
{ 83, 60 }, // LED 96
{ 95, 60 }, // LED 97
}, {
// LED Index to Flag
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,

View File

@ -10,33 +10,36 @@ const is31_led g_is31_leds[RGB_MATRIX_LED_COUNT] = {
* | | G location
* | | | B location
* | | | | */
{0, CS1_SW1, CS2_SW1, CS3_SW1}, // LED 1
{0, CS1_SW2, CS2_SW2, CS3_SW2}, // LED 2
// TODO: probably need to re-arrange them as below in g_led_config
// LED IDs from pos diagram missing in schematic: 77, 87, 96, 78, 95, 79, 19
// LED from Schematic below. Those without X are missing in pos diagram.
{0, CS1_SW1, CS2_SW1, CS3_SW1}, // LED 1 X
{0, CS1_SW2, CS2_SW2, CS3_SW2}, // LED 2 X
{0, CS1_SW3, CS2_SW3, CS3_SW3}, // LED 3
{0, CS1_SW4, CS2_SW4, CS3_SW4}, // LED 4
{0, CS4_SW1, CS5_SW1, CS6_SW1}, // LED 10
{0, CS4_SW2, CS5_SW2, CS6_SW2}, // LED 14
{0, CS4_SW3, CS5_SW3, CS6_SW3}, // LED 11
{0, CS4_SW4, CS5_SW4, CS6_SW4}, // LED 12
{0, CS4_SW1, CS5_SW1, CS6_SW1}, // LED 10 X
{0, CS4_SW2, CS5_SW2, CS6_SW2}, // LED 14 X
{0, CS4_SW3, CS5_SW3, CS6_SW3}, // LED 11 X
{0, CS4_SW4, CS5_SW4, CS6_SW4}, // LED 12 X
{0, CS7_SW1, CS8_SW1, CS9_SW1}, // LED 19
{0, CS7_SW2, CS8_SW2, CS9_SW2}, // LED 20
{0, CS7_SW3, CS8_SW3, CS9_SW3}, // LED 21
{0, CS7_SW4, CS8_SW4, CS9_SW4}, // LED 22
{0, CS7_SW1, CS8_SW1, CS9_SW1}, // LED 19 X
{0, CS7_SW2, CS8_SW2, CS9_SW2}, // LED 20 X
{0, CS7_SW3, CS8_SW3, CS9_SW3}, // LED 21 X
{0, CS7_SW4, CS8_SW4, CS9_SW4}, // LED 22 X
{0, CS10_SW1, CS11_SW1, CS12_SW1}, // LED 33
{0, CS10_SW2, CS11_SW2, CS12_SW2}, // LED 34
{0, CS10_SW3, CS11_SW3, CS12_SW3}, // LED 28
{0, CS10_SW4, CS11_SW4, CS12_SW4}, // LED 29
{0, CS10_SW2, CS11_SW2, CS12_SW2}, // LED 34 X
{0, CS10_SW3, CS11_SW3, CS12_SW3}, // LED 28 X
{0, CS10_SW4, CS11_SW4, CS12_SW4}, // LED 29 X
{0, CS13_SW1, CS14_SW1, CS15_SW1}, // LED 41
{0, CS13_SW2, CS14_SW2, CS15_SW2}, // LED 37
{0, CS13_SW3, CS14_SW3, CS15_SW3}, // LED 38
{0, CS13_SW4, CS14_SW4, CS15_SW4}, // LED 42
{0, CS13_SW4, CS14_SW4, CS15_SW4}, // LED 42 X
{0, CS16_SW1, CS17_SW1, CS18_SW1}, // LED 46
{0, CS16_SW2, CS17_SW2, CS18_SW2}, // LED 47
{0, CS16_SW1, CS17_SW1, CS18_SW1}, // LED 46 X
{0, CS16_SW2, CS17_SW2, CS18_SW2}, // LED 47 X
{0, CS16_SW3, CS17_SW3, CS18_SW3}, // LED 48
{0, CS16_SW4, CS17_SW4, CS18_SW4}, // LED 49
};

View File

@ -234,11 +234,11 @@ def print_matrix(layout, led_to_el, normalized):
for row in led_to_el:
print(" {", end='')
for col in row:
print(f"{col: >4}, ", end='')
print(f"{col: >2}, ", end='')
print("},")
print("}, {")
print(" // LED Index to Physical Potision")
print(" // LED Index to Physical Position")
for (i, (led_id, (x, y))) in enumerate(normalized.items()):
coords = f" {{ {int(x): >3}, {int(y): >3} }},"
print(f"{coords: <15} // LED {led_id}")