From ad433e2452268fa8a093ba4a1becd657df8ff384 Mon Sep 17 00:00:00 2001 From: fruchti Date: Mon, 21 Sep 2020 00:31:44 +0200 Subject: [PATCH] Move gamma correction from software to LUT --- build-number.txt | 2 +- src/animation_lut.c | 511 ++++++++++++++++++++++---------------------- src/animation_lut.h | 2 +- src/led.c | 10 +- src/led.h | 8 +- 5 files changed, 266 insertions(+), 267 deletions(-) diff --git a/build-number.txt b/build-number.txt index b283aee..055b667 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -482 +507 diff --git a/src/animation_lut.c b/src/animation_lut.c index 8ef4e12..04132a5 100644 --- a/src/animation_lut.c +++ b/src/animation_lut.c @@ -2,259 +2,260 @@ const LED_Colour_t Animation_ColourLUT[] = { - { .r = 255, .g = 51, .b = 51 }, - { .r = 255, .g = 51, .b = 56 }, - { .r = 255, .g = 51, .b = 61 }, - { .r = 255, .g = 51, .b = 65 }, - { .r = 255, .g = 51, .b = 70 }, - { .r = 255, .g = 51, .b = 75 }, - { .r = 255, .g = 51, .b = 80 }, - { .r = 255, .g = 51, .b = 85 }, - { .r = 255, .g = 51, .b = 89 }, - { .r = 255, .g = 51, .b = 94 }, - { .r = 255, .g = 51, .b = 99 }, - { .r = 255, .g = 51, .b = 104 }, - { .r = 255, .g = 51, .b = 109 }, - { .r = 255, .g = 51, .b = 113 }, - { .r = 255, .g = 51, .b = 118 }, - { .r = 255, .g = 51, .b = 123 }, - { .r = 255, .g = 51, .b = 128 }, - { .r = 255, .g = 51, .b = 133 }, - { .r = 255, .g = 51, .b = 137 }, - { .r = 255, .g = 51, .b = 142 }, - { .r = 255, .g = 51, .b = 147 }, - { .r = 255, .g = 51, .b = 152 }, - { .r = 255, .g = 51, .b = 157 }, - { .r = 255, .g = 51, .b = 161 }, - { .r = 255, .g = 51, .b = 166 }, - { .r = 255, .g = 51, .b = 171 }, - { .r = 255, .g = 51, .b = 176 }, - { .r = 255, .g = 51, .b = 181 }, - { .r = 255, .g = 51, .b = 185 }, - { .r = 255, .g = 51, .b = 190 }, - { .r = 255, .g = 51, .b = 195 }, - { .r = 255, .g = 51, .b = 200 }, - { .r = 255, .g = 51, .b = 205 }, - { .r = 255, .g = 51, .b = 209 }, - { .r = 255, .g = 51, .b = 214 }, - { .r = 255, .g = 51, .b = 219 }, - { .r = 255, .g = 51, .b = 224 }, - { .r = 255, .g = 51, .b = 229 }, - { .r = 255, .g = 51, .b = 233 }, - { .r = 255, .g = 51, .b = 238 }, - { .r = 255, .g = 51, .b = 243 }, - { .r = 255, .g = 51, .b = 248 }, - { .r = 255, .g = 51, .b = 253 }, - { .r = 253, .g = 51, .b = 255 }, - { .r = 248, .g = 51, .b = 255 }, - { .r = 243, .g = 51, .b = 255 }, - { .r = 238, .g = 51, .b = 255 }, - { .r = 233, .g = 51, .b = 255 }, - { .r = 229, .g = 51, .b = 255 }, - { .r = 224, .g = 51, .b = 255 }, - { .r = 219, .g = 51, .b = 255 }, - { .r = 214, .g = 51, .b = 255 }, - { .r = 209, .g = 51, .b = 255 }, - { .r = 205, .g = 51, .b = 255 }, - { .r = 200, .g = 51, .b = 255 }, - { .r = 195, .g = 51, .b = 255 }, - { .r = 190, .g = 51, .b = 255 }, - { .r = 185, .g = 51, .b = 255 }, - { .r = 181, .g = 51, .b = 255 }, - { .r = 176, .g = 51, .b = 255 }, - { .r = 171, .g = 51, .b = 255 }, - { .r = 166, .g = 51, .b = 255 }, - { .r = 161, .g = 51, .b = 255 }, - { .r = 157, .g = 51, .b = 255 }, - { .r = 152, .g = 51, .b = 255 }, - { .r = 147, .g = 51, .b = 255 }, - { .r = 142, .g = 51, .b = 255 }, - { .r = 137, .g = 51, .b = 255 }, - { .r = 133, .g = 51, .b = 255 }, - { .r = 128, .g = 51, .b = 255 }, - { .r = 123, .g = 51, .b = 255 }, - { .r = 118, .g = 51, .b = 255 }, - { .r = 113, .g = 51, .b = 255 }, - { .r = 109, .g = 51, .b = 255 }, - { .r = 104, .g = 51, .b = 255 }, - { .r = 99, .g = 51, .b = 255 }, - { .r = 94, .g = 51, .b = 255 }, - { .r = 89, .g = 51, .b = 255 }, - { .r = 85, .g = 51, .b = 255 }, - { .r = 80, .g = 51, .b = 255 }, - { .r = 75, .g = 51, .b = 255 }, - { .r = 70, .g = 51, .b = 255 }, - { .r = 65, .g = 51, .b = 255 }, - { .r = 61, .g = 51, .b = 255 }, - { .r = 56, .g = 51, .b = 255 }, - { .r = 51, .g = 51, .b = 255 }, - { .r = 51, .g = 56, .b = 255 }, - { .r = 51, .g = 61, .b = 255 }, - { .r = 51, .g = 65, .b = 255 }, - { .r = 51, .g = 70, .b = 255 }, - { .r = 51, .g = 75, .b = 255 }, - { .r = 51, .g = 80, .b = 255 }, - { .r = 51, .g = 85, .b = 255 }, - { .r = 51, .g = 89, .b = 255 }, - { .r = 51, .g = 94, .b = 255 }, - { .r = 51, .g = 99, .b = 255 }, - { .r = 51, .g = 104, .b = 255 }, - { .r = 51, .g = 109, .b = 255 }, - { .r = 51, .g = 113, .b = 255 }, - { .r = 51, .g = 118, .b = 255 }, - { .r = 51, .g = 123, .b = 255 }, - { .r = 51, .g = 128, .b = 255 }, - { .r = 51, .g = 133, .b = 255 }, - { .r = 51, .g = 137, .b = 255 }, - { .r = 51, .g = 142, .b = 255 }, - { .r = 51, .g = 147, .b = 255 }, - { .r = 51, .g = 152, .b = 255 }, - { .r = 51, .g = 157, .b = 255 }, - { .r = 51, .g = 161, .b = 255 }, - { .r = 51, .g = 166, .b = 255 }, - { .r = 51, .g = 171, .b = 255 }, - { .r = 51, .g = 176, .b = 255 }, - { .r = 51, .g = 181, .b = 255 }, - { .r = 51, .g = 185, .b = 255 }, - { .r = 51, .g = 190, .b = 255 }, - { .r = 51, .g = 195, .b = 255 }, - { .r = 51, .g = 200, .b = 255 }, - { .r = 51, .g = 205, .b = 255 }, - { .r = 51, .g = 209, .b = 255 }, - { .r = 51, .g = 214, .b = 255 }, - { .r = 51, .g = 219, .b = 255 }, - { .r = 51, .g = 224, .b = 255 }, - { .r = 51, .g = 229, .b = 255 }, - { .r = 51, .g = 233, .b = 255 }, - { .r = 51, .g = 238, .b = 255 }, - { .r = 51, .g = 243, .b = 255 }, - { .r = 51, .g = 248, .b = 255 }, - { .r = 51, .g = 253, .b = 255 }, - { .r = 51, .g = 255, .b = 253 }, - { .r = 51, .g = 255, .b = 248 }, - { .r = 51, .g = 255, .b = 243 }, - { .r = 51, .g = 255, .b = 238 }, - { .r = 51, .g = 255, .b = 233 }, - { .r = 51, .g = 255, .b = 229 }, - { .r = 51, .g = 255, .b = 224 }, - { .r = 51, .g = 255, .b = 219 }, - { .r = 51, .g = 255, .b = 214 }, - { .r = 51, .g = 255, .b = 209 }, - { .r = 51, .g = 255, .b = 205 }, - { .r = 51, .g = 255, .b = 200 }, - { .r = 51, .g = 255, .b = 195 }, - { .r = 51, .g = 255, .b = 190 }, - { .r = 51, .g = 255, .b = 185 }, - { .r = 51, .g = 255, .b = 181 }, - { .r = 51, .g = 255, .b = 176 }, - { .r = 51, .g = 255, .b = 171 }, - { .r = 51, .g = 255, .b = 166 }, - { .r = 51, .g = 255, .b = 161 }, - { .r = 51, .g = 255, .b = 157 }, - { .r = 51, .g = 255, .b = 152 }, - { .r = 51, .g = 255, .b = 147 }, - { .r = 51, .g = 255, .b = 142 }, - { .r = 51, .g = 255, .b = 137 }, - { .r = 51, .g = 255, .b = 133 }, - { .r = 51, .g = 255, .b = 128 }, - { .r = 51, .g = 255, .b = 123 }, - { .r = 51, .g = 255, .b = 118 }, - { .r = 51, .g = 255, .b = 113 }, - { .r = 51, .g = 255, .b = 109 }, - { .r = 51, .g = 255, .b = 104 }, - { .r = 51, .g = 255, .b = 99 }, - { .r = 51, .g = 255, .b = 94 }, - { .r = 51, .g = 255, .b = 89 }, - { .r = 51, .g = 255, .b = 85 }, - { .r = 51, .g = 255, .b = 80 }, - { .r = 51, .g = 255, .b = 75 }, - { .r = 51, .g = 255, .b = 70 }, - { .r = 51, .g = 255, .b = 65 }, - { .r = 51, .g = 255, .b = 61 }, - { .r = 51, .g = 255, .b = 56 }, - { .r = 51, .g = 255, .b = 51 }, - { .r = 56, .g = 255, .b = 51 }, - { .r = 61, .g = 255, .b = 51 }, - { .r = 65, .g = 255, .b = 51 }, - { .r = 70, .g = 255, .b = 51 }, - { .r = 75, .g = 255, .b = 51 }, - { .r = 80, .g = 255, .b = 51 }, - { .r = 85, .g = 255, .b = 51 }, - { .r = 89, .g = 255, .b = 51 }, - { .r = 94, .g = 255, .b = 51 }, - { .r = 99, .g = 255, .b = 51 }, - { .r = 104, .g = 255, .b = 51 }, - { .r = 109, .g = 255, .b = 51 }, - { .r = 113, .g = 255, .b = 51 }, - { .r = 118, .g = 255, .b = 51 }, - { .r = 123, .g = 255, .b = 51 }, - { .r = 128, .g = 255, .b = 51 }, - { .r = 133, .g = 255, .b = 51 }, - { .r = 137, .g = 255, .b = 51 }, - { .r = 142, .g = 255, .b = 51 }, - { .r = 147, .g = 255, .b = 51 }, - { .r = 152, .g = 255, .b = 51 }, - { .r = 157, .g = 255, .b = 51 }, - { .r = 161, .g = 255, .b = 51 }, - { .r = 166, .g = 255, .b = 51 }, - { .r = 171, .g = 255, .b = 51 }, - { .r = 176, .g = 255, .b = 51 }, - { .r = 181, .g = 255, .b = 51 }, - { .r = 185, .g = 255, .b = 51 }, - { .r = 190, .g = 255, .b = 51 }, - { .r = 195, .g = 255, .b = 51 }, - { .r = 200, .g = 255, .b = 51 }, - { .r = 205, .g = 255, .b = 51 }, - { .r = 209, .g = 255, .b = 51 }, - { .r = 214, .g = 255, .b = 51 }, - { .r = 219, .g = 255, .b = 51 }, - { .r = 224, .g = 255, .b = 51 }, - { .r = 229, .g = 255, .b = 51 }, - { .r = 233, .g = 255, .b = 51 }, - { .r = 238, .g = 255, .b = 51 }, - { .r = 243, .g = 255, .b = 51 }, - { .r = 248, .g = 255, .b = 51 }, - { .r = 253, .g = 255, .b = 51 }, - { .r = 255, .g = 253, .b = 51 }, - { .r = 255, .g = 248, .b = 51 }, - { .r = 255, .g = 243, .b = 51 }, - { .r = 255, .g = 238, .b = 51 }, - { .r = 255, .g = 233, .b = 51 }, - { .r = 255, .g = 229, .b = 51 }, - { .r = 255, .g = 224, .b = 51 }, - { .r = 255, .g = 219, .b = 51 }, - { .r = 255, .g = 214, .b = 51 }, - { .r = 255, .g = 209, .b = 51 }, - { .r = 255, .g = 205, .b = 51 }, - { .r = 255, .g = 200, .b = 51 }, - { .r = 255, .g = 195, .b = 51 }, - { .r = 255, .g = 190, .b = 51 }, - { .r = 255, .g = 185, .b = 51 }, - { .r = 255, .g = 181, .b = 51 }, - { .r = 255, .g = 176, .b = 51 }, - { .r = 255, .g = 171, .b = 51 }, - { .r = 255, .g = 166, .b = 51 }, - { .r = 255, .g = 161, .b = 51 }, - { .r = 255, .g = 157, .b = 51 }, - { .r = 255, .g = 152, .b = 51 }, - { .r = 255, .g = 147, .b = 51 }, - { .r = 255, .g = 142, .b = 51 }, - { .r = 255, .g = 137, .b = 51 }, - { .r = 255, .g = 133, .b = 51 }, - { .r = 255, .g = 128, .b = 51 }, - { .r = 255, .g = 123, .b = 51 }, - { .r = 255, .g = 118, .b = 51 }, - { .r = 255, .g = 113, .b = 51 }, - { .r = 255, .g = 109, .b = 51 }, - { .r = 255, .g = 104, .b = 51 }, - { .r = 255, .g = 99, .b = 51 }, - { .r = 255, .g = 94, .b = 51 }, - { .r = 255, .g = 89, .b = 51 }, - { .r = 255, .g = 85, .b = 51 }, - { .r = 255, .g = 80, .b = 51 }, - { .r = 255, .g = 75, .b = 51 }, - { .r = 255, .g = 70, .b = 51 }, - { .r = 255, .g = 65, .b = 51 }, - { .r = 255, .g = 61, .b = 51 }, - { .r = 255, .g = 56, .b = 51 }, + { .r = 4096, .g = 119, .b = 119 }, + { .r = 4096, .g = 145, .b = 119 }, + { .r = 4096, .g = 173, .b = 119 }, + { .r = 4096, .g = 205, .b = 119 }, + { .r = 4096, .g = 239, .b = 119 }, + { .r = 4096, .g = 277, .b = 119 }, + { .r = 4096, .g = 317, .b = 119 }, + { .r = 4096, .g = 360, .b = 119 }, + { .r = 4096, .g = 407, .b = 119 }, + { .r = 4096, .g = 456, .b = 119 }, + { .r = 4096, .g = 509, .b = 119 }, + { .r = 4096, .g = 565, .b = 119 }, + { .r = 4096, .g = 623, .b = 119 }, + { .r = 4096, .g = 686, .b = 119 }, + { .r = 4096, .g = 751, .b = 119 }, + { .r = 4096, .g = 820, .b = 119 }, + { .r = 4096, .g = 891, .b = 119 }, + { .r = 4096, .g = 967, .b = 119 }, + { .r = 4096, .g = 1045, .b = 119 }, + { .r = 4096, .g = 1127, .b = 119 }, + { .r = 4096, .g = 1212, .b = 119 }, + { .r = 4096, .g = 1301, .b = 119 }, + { .r = 4096, .g = 1393, .b = 119 }, + { .r = 4096, .g = 1489, .b = 119 }, + { .r = 4096, .g = 1588, .b = 119 }, + { .r = 4096, .g = 1690, .b = 119 }, + { .r = 4096, .g = 1796, .b = 119 }, + { .r = 4096, .g = 1906, .b = 119 }, + { .r = 4096, .g = 2019, .b = 119 }, + { .r = 4096, .g = 2135, .b = 119 }, + { .r = 4096, .g = 2256, .b = 119 }, + { .r = 4096, .g = 2380, .b = 119 }, + { .r = 4096, .g = 2507, .b = 119 }, + { .r = 4096, .g = 2638, .b = 119 }, + { .r = 4096, .g = 2773, .b = 119 }, + { .r = 4096, .g = 2911, .b = 119 }, + { .r = 4096, .g = 3053, .b = 119 }, + { .r = 4096, .g = 3199, .b = 119 }, + { .r = 4096, .g = 3349, .b = 119 }, + { .r = 4096, .g = 3502, .b = 119 }, + { .r = 4096, .g = 3659, .b = 119 }, + { .r = 4096, .g = 3820, .b = 119 }, + { .r = 4096, .g = 3984, .b = 119 }, + { .r = 4040, .g = 4096, .b = 119 }, + { .r = 3874, .g = 4096, .b = 119 }, + { .r = 3712, .g = 4096, .b = 119 }, + { .r = 3554, .g = 4096, .b = 119 }, + { .r = 3399, .g = 4096, .b = 119 }, + { .r = 3249, .g = 4096, .b = 119 }, + { .r = 3102, .g = 4096, .b = 119 }, + { .r = 2958, .g = 4096, .b = 119 }, + { .r = 2819, .g = 4096, .b = 119 }, + { .r = 2683, .g = 4096, .b = 119 }, + { .r = 2550, .g = 4096, .b = 119 }, + { .r = 2422, .g = 4096, .b = 119 }, + { .r = 2297, .g = 4096, .b = 119 }, + { .r = 2175, .g = 4096, .b = 119 }, + { .r = 2057, .g = 4096, .b = 119 }, + { .r = 1943, .g = 4096, .b = 119 }, + { .r = 1832, .g = 4096, .b = 119 }, + { .r = 1725, .g = 4096, .b = 119 }, + { .r = 1621, .g = 4096, .b = 119 }, + { .r = 1521, .g = 4096, .b = 119 }, + { .r = 1425, .g = 4096, .b = 119 }, + { .r = 1331, .g = 4096, .b = 119 }, + { .r = 1242, .g = 4096, .b = 119 }, + { .r = 1155, .g = 4096, .b = 119 }, + { .r = 1072, .g = 4096, .b = 119 }, + { .r = 992, .g = 4096, .b = 119 }, + { .r = 916, .g = 4096, .b = 119 }, + { .r = 843, .g = 4096, .b = 119 }, + { .r = 773, .g = 4096, .b = 119 }, + { .r = 707, .g = 4096, .b = 119 }, + { .r = 644, .g = 4096, .b = 119 }, + { .r = 584, .g = 4096, .b = 119 }, + { .r = 527, .g = 4096, .b = 119 }, + { .r = 473, .g = 4096, .b = 119 }, + { .r = 423, .g = 4096, .b = 119 }, + { .r = 375, .g = 4096, .b = 119 }, + { .r = 331, .g = 4096, .b = 119 }, + { .r = 290, .g = 4096, .b = 119 }, + { .r = 251, .g = 4096, .b = 119 }, + { .r = 216, .g = 4096, .b = 119 }, + { .r = 184, .g = 4096, .b = 119 }, + { .r = 154, .g = 4096, .b = 119 }, + { .r = 127, .g = 4096, .b = 119 }, + { .r = 119, .g = 4096, .b = 136 }, + { .r = 119, .g = 4096, .b = 163 }, + { .r = 119, .g = 4096, .b = 194 }, + { .r = 119, .g = 4096, .b = 227 }, + { .r = 119, .g = 4096, .b = 264 }, + { .r = 119, .g = 4096, .b = 303 }, + { .r = 119, .g = 4096, .b = 346 }, + { .r = 119, .g = 4096, .b = 391 }, + { .r = 119, .g = 4096, .b = 439 }, + { .r = 119, .g = 4096, .b = 491 }, + { .r = 119, .g = 4096, .b = 546 }, + { .r = 119, .g = 4096, .b = 603 }, + { .r = 119, .g = 4096, .b = 665 }, + { .r = 119, .g = 4096, .b = 729 }, + { .r = 119, .g = 4096, .b = 796 }, + { .r = 119, .g = 4096, .b = 867 }, + { .r = 119, .g = 4096, .b = 941 }, + { .r = 119, .g = 4096, .b = 1019 }, + { .r = 119, .g = 4096, .b = 1099 }, + { .r = 119, .g = 4096, .b = 1184 }, + { .r = 119, .g = 4096, .b = 1271 }, + { .r = 119, .g = 4096, .b = 1362 }, + { .r = 119, .g = 4096, .b = 1456 }, + { .r = 119, .g = 4096, .b = 1554 }, + { .r = 119, .g = 4096, .b = 1656 }, + { .r = 119, .g = 4096, .b = 1760 }, + { .r = 119, .g = 4096, .b = 1869 }, + { .r = 119, .g = 4096, .b = 1981 }, + { .r = 119, .g = 4096, .b = 2096 }, + { .r = 119, .g = 4096, .b = 2215 }, + { .r = 119, .g = 4096, .b = 2338 }, + { .r = 119, .g = 4096, .b = 2464 }, + { .r = 119, .g = 4096, .b = 2594 }, + { .r = 119, .g = 4096, .b = 2728 }, + { .r = 119, .g = 4096, .b = 2865 }, + { .r = 119, .g = 4096, .b = 3006 }, + { .r = 119, .g = 4096, .b = 3150 }, + { .r = 119, .g = 4096, .b = 3298 }, + { .r = 119, .g = 4096, .b = 3450 }, + { .r = 119, .g = 4096, .b = 3606 }, + { .r = 119, .g = 4096, .b = 3766 }, + { .r = 119, .g = 4096, .b = 3929 }, + { .r = 119, .g = 4096, .b = 4096 }, + { .r = 119, .g = 3929, .b = 4096 }, + { .r = 119, .g = 3766, .b = 4096 }, + { .r = 119, .g = 3606, .b = 4096 }, + { .r = 119, .g = 3450, .b = 4096 }, + { .r = 119, .g = 3298, .b = 4096 }, + { .r = 119, .g = 3150, .b = 4096 }, + { .r = 119, .g = 3006, .b = 4096 }, + { .r = 119, .g = 2865, .b = 4096 }, + { .r = 119, .g = 2728, .b = 4096 }, + { .r = 119, .g = 2594, .b = 4096 }, + { .r = 119, .g = 2464, .b = 4096 }, + { .r = 119, .g = 2338, .b = 4096 }, + { .r = 119, .g = 2215, .b = 4096 }, + { .r = 119, .g = 2096, .b = 4096 }, + { .r = 119, .g = 1981, .b = 4096 }, + { .r = 119, .g = 1869, .b = 4096 }, + { .r = 119, .g = 1760, .b = 4096 }, + { .r = 119, .g = 1656, .b = 4096 }, + { .r = 119, .g = 1554, .b = 4096 }, + { .r = 119, .g = 1456, .b = 4096 }, + { .r = 119, .g = 1362, .b = 4096 }, + { .r = 119, .g = 1271, .b = 4096 }, + { .r = 119, .g = 1184, .b = 4096 }, + { .r = 119, .g = 1099, .b = 4096 }, + { .r = 119, .g = 1019, .b = 4096 }, + { .r = 119, .g = 941, .b = 4096 }, + { .r = 119, .g = 867, .b = 4096 }, + { .r = 119, .g = 796, .b = 4096 }, + { .r = 119, .g = 729, .b = 4096 }, + { .r = 119, .g = 665, .b = 4096 }, + { .r = 119, .g = 603, .b = 4096 }, + { .r = 119, .g = 546, .b = 4096 }, + { .r = 119, .g = 491, .b = 4096 }, + { .r = 119, .g = 439, .b = 4096 }, + { .r = 119, .g = 391, .b = 4096 }, + { .r = 119, .g = 346, .b = 4096 }, + { .r = 119, .g = 303, .b = 4096 }, + { .r = 119, .g = 264, .b = 4096 }, + { .r = 119, .g = 227, .b = 4096 }, + { .r = 119, .g = 194, .b = 4096 }, + { .r = 119, .g = 163, .b = 4096 }, + { .r = 119, .g = 136, .b = 4096 }, + { .r = 127, .g = 119, .b = 4096 }, + { .r = 154, .g = 119, .b = 4096 }, + { .r = 184, .g = 119, .b = 4096 }, + { .r = 216, .g = 119, .b = 4096 }, + { .r = 251, .g = 119, .b = 4096 }, + { .r = 290, .g = 119, .b = 4096 }, + { .r = 331, .g = 119, .b = 4096 }, + { .r = 375, .g = 119, .b = 4096 }, + { .r = 423, .g = 119, .b = 4096 }, + { .r = 473, .g = 119, .b = 4096 }, + { .r = 527, .g = 119, .b = 4096 }, + { .r = 584, .g = 119, .b = 4096 }, + { .r = 644, .g = 119, .b = 4096 }, + { .r = 707, .g = 119, .b = 4096 }, + { .r = 773, .g = 119, .b = 4096 }, + { .r = 843, .g = 119, .b = 4096 }, + { .r = 916, .g = 119, .b = 4096 }, + { .r = 992, .g = 119, .b = 4096 }, + { .r = 1072, .g = 119, .b = 4096 }, + { .r = 1155, .g = 119, .b = 4096 }, + { .r = 1242, .g = 119, .b = 4096 }, + { .r = 1331, .g = 119, .b = 4096 }, + { .r = 1425, .g = 119, .b = 4096 }, + { .r = 1521, .g = 119, .b = 4096 }, + { .r = 1621, .g = 119, .b = 4096 }, + { .r = 1725, .g = 119, .b = 4096 }, + { .r = 1832, .g = 119, .b = 4096 }, + { .r = 1943, .g = 119, .b = 4096 }, + { .r = 2057, .g = 119, .b = 4096 }, + { .r = 2175, .g = 119, .b = 4096 }, + { .r = 2297, .g = 119, .b = 4096 }, + { .r = 2422, .g = 119, .b = 4096 }, + { .r = 2550, .g = 119, .b = 4096 }, + { .r = 2683, .g = 119, .b = 4096 }, + { .r = 2819, .g = 119, .b = 4096 }, + { .r = 2958, .g = 119, .b = 4096 }, + { .r = 3102, .g = 119, .b = 4096 }, + { .r = 3249, .g = 119, .b = 4096 }, + { .r = 3399, .g = 119, .b = 4096 }, + { .r = 3554, .g = 119, .b = 4096 }, + { .r = 3712, .g = 119, .b = 4096 }, + { .r = 3874, .g = 119, .b = 4096 }, + { .r = 4040, .g = 119, .b = 4096 }, + { .r = 4096, .g = 119, .b = 3984 }, + { .r = 4096, .g = 119, .b = 3820 }, + { .r = 4096, .g = 119, .b = 3659 }, + { .r = 4096, .g = 119, .b = 3502 }, + { .r = 4096, .g = 119, .b = 3349 }, + { .r = 4096, .g = 119, .b = 3199 }, + { .r = 4096, .g = 119, .b = 3053 }, + { .r = 4096, .g = 119, .b = 2911 }, + { .r = 4096, .g = 119, .b = 2773 }, + { .r = 4096, .g = 119, .b = 2638 }, + { .r = 4096, .g = 119, .b = 2507 }, + { .r = 4096, .g = 119, .b = 2380 }, + { .r = 4096, .g = 119, .b = 2256 }, + { .r = 4096, .g = 119, .b = 2135 }, + { .r = 4096, .g = 119, .b = 2019 }, + { .r = 4096, .g = 119, .b = 1906 }, + { .r = 4096, .g = 119, .b = 1796 }, + { .r = 4096, .g = 119, .b = 1690 }, + { .r = 4096, .g = 119, .b = 1588 }, + { .r = 4096, .g = 119, .b = 1489 }, + { .r = 4096, .g = 119, .b = 1393 }, + { .r = 4096, .g = 119, .b = 1301 }, + { .r = 4096, .g = 119, .b = 1212 }, + { .r = 4096, .g = 119, .b = 1127 }, + { .r = 4096, .g = 119, .b = 1045 }, + { .r = 4096, .g = 119, .b = 967 }, + { .r = 4096, .g = 119, .b = 891 }, + { .r = 4096, .g = 119, .b = 820 }, + { .r = 4096, .g = 119, .b = 751 }, + { .r = 4096, .g = 119, .b = 686 }, + { .r = 4096, .g = 119, .b = 623 }, + { .r = 4096, .g = 119, .b = 565 }, + { .r = 4096, .g = 119, .b = 509 }, + { .r = 4096, .g = 119, .b = 456 }, + { .r = 4096, .g = 119, .b = 407 }, + { .r = 4096, .g = 119, .b = 360 }, + { .r = 4096, .g = 119, .b = 317 }, + { .r = 4096, .g = 119, .b = 277 }, + { .r = 4096, .g = 119, .b = 239 }, + { .r = 4096, .g = 119, .b = 205 }, + { .r = 4096, .g = 119, .b = 173 }, + { .r = 4096, .g = 119, .b = 145 }, }; diff --git a/src/animation_lut.h b/src/animation_lut.h index 09dcff0..79bb8dc 100644 --- a/src/animation_lut.h +++ b/src/animation_lut.h @@ -2,4 +2,4 @@ #include "led.h" -extern const LED_Colour_t Animation_ColourLUT[255]; +extern const LED_Colour_t Animation_ColourLUT[256]; diff --git a/src/led.c b/src/led.c index b7dea1f..197699d 100644 --- a/src/led.c +++ b/src/led.c @@ -105,15 +105,13 @@ void LED_Commit(void) { for(int i = 0; i < LED_COLUMNS; i++) { - // Use pixel data as a raw byte buffer to get R, G, B in order - uint8_t colour_value = ((uint8_t*)LED_PixelData)[r * LED_COLUMNS + i]; - uint16_t gamma_corrected = (uint16_t)colour_value; - gamma_corrected *= gamma_corrected; - gamma_corrected >>= 16 - LED_BITS; + // Use pixel data as a raw word buffer to get R, G, B in order + uint16_t colour_value = + ((uint16_t*)LED_PixelData)[r * LED_COLUMNS + i]; for(int j = 0; j < LED_BITS; j++) { - if(gamma_corrected & (1 << j)) + if(colour_value & (1 << j)) { LED_BackBuffer[r * (LED_BITS + 1) + j] &= ~(1 << LED_Pins[i]); diff --git a/src/led.h b/src/led.h index 0d35897..083bc1d 100644 --- a/src/led.h +++ b/src/led.h @@ -14,10 +14,10 @@ typedef struct { - uint8_t r; - uint8_t g; - uint8_t b; -} __attribute__((packed)) LED_Colour_t; + uint16_t r; + uint16_t g; + uint16_t b; +} __attribute__((packed, aligned(2))) LED_Colour_t; // Pixel data, not displayed until LED_Commit() is called extern LED_Colour_t LED_PixelData[LED_COUNT];