diff --git a/esp8266-fastled-webserver/Map.cpp b/esp8266-fastled-webserver/Map.cpp index f3f1403c..a8ed1b75 100644 --- a/esp8266-fastled-webserver/Map.cpp +++ b/esp8266-fastled-webserver/Map.cpp @@ -53,7 +53,15 @@ // the continued use of 8-bit algorithms would be more critical. // -#if defined(PRODUCT_FIBONACCI512) +#if defined(PRODUCT_FIBONACCI1024) + const uint16_t physicalToFibonacci[NUM_PIXELS] { 0, 55, 110, 165, 220, 275, 330, 385, 440, 495, 550, 605, 660, 715, 770, 825, 880, 935, 990, 1011, 956, 901, 846, 791, 736, 681, 626, 571, 516, 461, 406, 351, 296, 241, 186, 131, 76, 21, 42, 97, 152, 207, 262, 317, 372, 427, 482, 537, 592, 647, 702, 757, 812, 867, 922, 977, 998, 943, 888, 833, 778, 723, 668, 613, 558, 503, 448, 393, 338, 283, 228, 173, 118, 63, 8, 29, 84, 139, 194, 249, 304, 359, 414, 469, 524, 579, 634, 689, 744, 799, 854, 909, 964, 1019, 985, 930, 875, 820, 765, 710, 655, 600, 545, 490, 435, 380, 325, 270, 215, 160, 105, 50, 16, 71, 126, 181, 236, 291, 346, 401, 456, 511, 566, 621, 676, 731, 786, 841, 896, 951, 1006, 972, 917, 862, 807, 752, 697, 642, 587, 532, 477, 422, 367, 312, 257, 202, 147, 92, 37, 3, 58, 113, 168, 223, 278, 333, 388, 443, 498, 553, 608, 663, 718, 773, 828, 883, 938, 993, 1014, 959, 904, 849, 794, 739, 684, 629, 574, 519, 464, 409, 354, 299, 244, 189, 134, 79, 24, 45, 100, 155, 210, 265, 320, 375, 430, 485, 540, 595, 650, 705, 760, 815, 870, 925, 980, 11, 66, 121, 176, 231, 286, 341, 396, 451, 506, 561, 616, 671, 726, 781, 836, 891, 946, 1001, 1022, 967, 912, 857, 802, 747, 692, 637, 582, 527, 472, 417, 362, 307, 252, 197, 142, 87, 32, 53, 108, 163, 218, 273, 328, 383, 438, 493, 548, 603, 658, 713, 768, 823, 878, 933, 988, 1009, 954, 899, 844, 789, 734, 679, 624, 569, 514, 459, 404, 349, 294, 239, 184, 129, 74, 19, 40, 95, 150, 205, 260, 315, 370, 425, 480, 535, 590, 645, 700, 755, 810, 865, 920, 975, 996, 941, 886, 831, 776, 721, 666, 611, 556, 501, 446, 391, 336, 281, 226, 171, 116, 61, 6, 27, 82, 137, 192, 247, 302, 357, 412, 467, 522, 577, 632, 687, 742, 797, 852, 907, 962, 1017, 983, 928, 873, 818, 763, 708, 653, 598, 543, 488, 433, 378, 323, 268, 213, 158, 103, 48, 14, 69, 124, 179, 234, 289, 344, 399, 454, 509, 564, 619, 674, 729, 784, 839, 894, 949, 1004, 970, 915, 860, 805, 750, 695, 640, 585, 530, 475, 420, 365, 310, 255, 200, 145, 90, 35, 1, 56, 111, 166, 221, 276, 331, 386, 441, 496, 551, 606, 661, 716, 771, 826, 881, 936, 991, 22, 77, 132, 187, 242, 297, 352, 407, 462, 517, 572, 627, 682, 737, 792, 847, 902, 957, 1012, 978, 923, 868, 813, 758, 703, 648, 593, 538, 483, 428, 373, 318, 263, 208, 153, 98, 43, 9, 64, 119, 174, 229, 284, 339, 394, 449, 504, 559, 614, 669, 724, 779, 834, 889, 944, 999, 1020, 965, 910, 855, 800, 745, 690, 635, 580, 525, 470, 415, 360, 305, 250, 195, 140, 85, 30, 51, 106, 161, 216, 271, 326, 381, 436, 491, 546, 601, 656, 711, 766, 821, 876, 931, 986, 1007, 952, 897, 842, 787, 732, 677, 622, 567, 512, 457, 402, 347, 292, 237, 182, 127, 72, 17, 38, 93, 148, 203, 258, 313, 368, 423, 478, 533, 588, 643, 698, 753, 808, 863, 918, 973, 994, 939, 884, 829, 774, 719, 664, 609, 554, 499, 444, 389, 334, 279, 224, 169, 114, 59, 4, 25, 80, 135, 190, 245, 300, 355, 410, 465, 520, 575, 630, 685, 740, 795, 850, 905, 960, 1015, 981, 926, 871, 816, 761, 706, 651, 596, 541, 486, 431, 376, 321, 266, 211, 156, 101, 46, 12, 67, 122, 177, 232, 287, 342, 397, 452, 507, 562, 617, 672, 727, 782, 837, 892, 947, 1002, 33, 88, 143, 198, 253, 308, 363, 418, 473, 528, 583, 638, 693, 748, 803, 858, 913, 968, 1023, 989, 934, 879, 824, 769, 714, 659, 604, 549, 494, 439, 384, 329, 274, 219, 164, 109, 54, 20, 75, 130, 185, 240, 295, 350, 405, 460, 515, 570, 625, 680, 735, 790, 845, 900, 955, 1010, 976, 921, 866, 811, 756, 701, 646, 591, 536, 481, 426, 371, 316, 261, 206, 151, 96, 41, 7, 62, 117, 172, 227, 282, 337, 392, 447, 502, 557, 612, 667, 722, 777, 832, 887, 942, 997, 1018, 963, 908, 853, 798, 743, 688, 633, 578, 523, 468, 413, 358, 303, 248, 193, 138, 83, 28, 49, 104, 159, 214, 269, 324, 379, 434, 489, 544, 599, 654, 709, 764, 819, 874, 929, 984, 1005, 950, 895, 840, 785, 730, 675, 620, 565, 510, 455, 400, 345, 290, 235, 180, 125, 70, 15, 36, 91, 146, 201, 256, 311, 366, 421, 476, 531, 586, 641, 696, 751, 806, 861, 916, 971, 992, 937, 882, 827, 772, 717, 662, 607, 552, 497, 442, 387, 332, 277, 222, 167, 112, 57, 2, 23, 78, 133, 188, 243, 298, 353, 408, 463, 518, 573, 628, 683, 738, 793, 848, 903, 958, 1013, 44, 99, 154, 209, 264, 319, 374, 429, 484, 539, 594, 649, 704, 759, 814, 869, 924, 979, 1000, 945, 890, 835, 780, 725, 670, 615, 560, 505, 450, 395, 340, 285, 230, 175, 120, 65, 10, 31, 86, 141, 196, 251, 306, 361, 416, 471, 526, 581, 636, 691, 746, 801, 856, 911, 966, 1021, 987, 932, 877, 822, 767, 712, 657, 602, 547, 492, 437, 382, 327, 272, 217, 162, 107, 52, 18, 73, 128, 183, 238, 293, 348, 403, 458, 513, 568, 623, 678, 733, 788, 843, 898, 953, 1008, 974, 919, 864, 809, 754, 699, 644, 589, 534, 479, 424, 369, 314, 259, 204, 149, 94, 39, 5, 60, 115, 170, 225, 280, 335, 390, 445, 500, 555, 610, 665, 720, 775, 830, 885, 940, 995, 1016, 961, 906, 851, 796, 741, 686, 631, 576, 521, 466, 411, 356, 301, 246, 191, 136, 81, 26, 47, 102, 157, 212, 267, 322, 377, 432, 487, 542, 597, 652, 707, 762, 817, 872, 927, 982, 1003, 948, 893, 838, 783, 728, 673, 618, 563, 508, 453, 398, 343, 288, 233, 178, 123, 68, 13, 34, 89, 144, 199, 254, 309, 364, 419, 474, 529, 584, 639, 694, 749, 804, 859, 914, 969 }; + const uint16_t fibonacciToPhysical[NUM_PIXELS] { 0, 391, 800, 149, 558, 931, 316, 689, 74, 447, 856, 205, 596, 1005, 354, 763, 112, 521, 894, 279, 652, 37, 410, 801, 186, 559, 968, 317, 726, 75, 484, 857, 242, 615, 1006, 390, 764, 148, 522, 930, 280, 688, 38, 446, 820, 187, 595, 969, 353, 727, 111, 485, 893, 243, 651, 1, 392, 799, 150, 557, 932, 315, 690, 73, 448, 855, 206, 597, 1004, 355, 762, 113, 520, 895, 278, 653, 36, 411, 802, 185, 560, 967, 318, 725, 76, 483, 858, 241, 616, 1007, 389, 765, 147, 523, 929, 281, 687, 39, 445, 821, 188, 594, 970, 352, 728, 110, 486, 892, 244, 650, 2, 393, 798, 151, 556, 933, 314, 691, 72, 449, 854, 207, 598, 1003, 356, 761, 114, 519, 896, 277, 654, 35, 412, 803, 184, 561, 966, 319, 724, 77, 482, 859, 240, 617, 1008, 388, 766, 146, 524, 928, 282, 686, 40, 444, 822, 189, 593, 971, 351, 729, 109, 487, 891, 245, 649, 3, 394, 797, 152, 555, 934, 313, 692, 71, 450, 853, 208, 599, 1002, 357, 760, 115, 518, 897, 276, 655, 34, 413, 804, 183, 562, 965, 320, 723, 78, 481, 860, 239, 618, 1009, 387, 767, 145, 525, 927, 283, 685, 41, 443, 823, 190, 592, 972, 350, 730, 108, 488, 890, 246, 648, 4, 395, 796, 153, 554, 935, 312, 693, 70, 451, 852, 209, 600, 1001, 358, 759, 116, 517, 898, 275, 656, 33, 414, 805, 182, 563, 964, 321, 722, 79, 480, 861, 238, 619, 1010, 386, 768, 144, 526, 926, 284, 684, 42, 442, 824, 191, 591, 973, 349, 731, 107, 489, 889, 247, 647, 5, 396, 795, 154, 553, 936, 311, 694, 69, 452, 851, 210, 601, 1000, 359, 758, 117, 516, 899, 274, 657, 32, 415, 806, 181, 564, 963, 322, 721, 80, 479, 862, 237, 620, 1011, 385, 769, 143, 527, 925, 285, 683, 43, 441, 825, 192, 590, 974, 348, 732, 106, 490, 888, 248, 646, 6, 397, 794, 155, 552, 937, 310, 695, 68, 453, 850, 211, 602, 999, 360, 757, 118, 515, 900, 273, 658, 31, 416, 807, 180, 565, 962, 323, 720, 81, 478, 863, 236, 621, 1012, 384, 770, 142, 528, 924, 286, 682, 44, 440, 826, 193, 589, 975, 347, 733, 105, 491, 887, 249, 645, 7, 398, 793, 156, 551, 938, 309, 696, 67, 454, 849, 212, 603, 998, 361, 756, 119, 514, 901, 272, 659, 30, 417, 808, 179, 566, 961, 324, 719, 82, 477, 864, 235, 622, 1013, 383, 771, 141, 529, 923, 287, 681, 45, 439, 827, 194, 588, 976, 346, 734, 104, 492, 886, 250, 644, 8, 399, 792, 157, 550, 939, 308, 697, 66, 455, 848, 213, 604, 997, 362, 755, 120, 513, 902, 271, 660, 29, 418, 809, 178, 567, 960, 325, 718, 83, 476, 865, 234, 623, 1014, 382, 772, 140, 530, 922, 288, 680, 46, 438, 828, 195, 587, 977, 345, 735, 103, 493, 885, 251, 643, 9, 400, 791, 158, 549, 940, 307, 698, 65, 456, 847, 214, 605, 996, 363, 754, 121, 512, 903, 270, 661, 28, 419, 810, 177, 568, 959, 326, 717, 84, 475, 866, 233, 624, 1015, 381, 773, 139, 531, 921, 289, 679, 47, 437, 829, 196, 586, 978, 344, 736, 102, 494, 884, 252, 642, 10, 401, 790, 159, 548, 941, 306, 699, 64, 457, 846, 215, 606, 995, 364, 753, 122, 511, 904, 269, 662, 27, 420, 811, 176, 569, 958, 327, 716, 85, 474, 867, 232, 625, 1016, 380, 774, 138, 532, 920, 290, 678, 48, 436, 830, 197, 585, 979, 343, 737, 101, 495, 883, 253, 641, 11, 402, 789, 160, 547, 942, 305, 700, 63, 458, 845, 216, 607, 994, 365, 752, 123, 510, 905, 268, 663, 26, 421, 812, 175, 570, 957, 328, 715, 86, 473, 868, 231, 626, 1017, 379, 775, 137, 533, 919, 291, 677, 49, 435, 831, 198, 584, 980, 342, 738, 100, 496, 882, 254, 640, 12, 403, 788, 161, 546, 943, 304, 701, 62, 459, 844, 217, 608, 993, 366, 751, 124, 509, 906, 267, 664, 25, 422, 813, 174, 571, 956, 329, 714, 87, 472, 869, 230, 627, 1018, 378, 776, 136, 534, 918, 292, 676, 50, 434, 832, 199, 583, 981, 341, 739, 99, 497, 881, 255, 639, 13, 404, 787, 162, 545, 944, 303, 702, 61, 460, 843, 218, 609, 992, 367, 750, 125, 508, 907, 266, 665, 24, 423, 814, 173, 572, 955, 330, 713, 88, 471, 870, 229, 628, 1019, 377, 777, 135, 535, 917, 293, 675, 51, 433, 833, 200, 582, 982, 340, 740, 98, 498, 880, 256, 638, 14, 405, 786, 163, 544, 945, 302, 703, 60, 461, 842, 219, 610, 991, 368, 749, 126, 507, 908, 265, 666, 23, 424, 815, 172, 573, 954, 331, 712, 89, 470, 871, 228, 629, 1020, 376, 778, 134, 536, 916, 294, 674, 52, 432, 834, 201, 581, 983, 339, 741, 97, 499, 879, 257, 637, 15, 406, 785, 164, 543, 946, 301, 704, 59, 462, 841, 220, 611, 990, 369, 748, 127, 506, 909, 264, 667, 22, 425, 816, 171, 574, 953, 332, 711, 90, 469, 872, 227, 630, 1021, 375, 779, 133, 537, 915, 295, 673, 53, 431, 835, 202, 580, 984, 338, 742, 96, 500, 878, 258, 636, 16, 407, 784, 165, 542, 947, 300, 705, 58, 463, 840, 221, 612, 989, 370, 747, 128, 505, 910, 263, 668, 21, 426, 817, 170, 575, 952, 333, 710, 91, 468, 873, 226, 631, 1022, 374, 780, 132, 538, 914, 296, 672, 54, 430, 836, 203, 579, 985, 337, 743, 95, 501, 877, 259, 635, 17, 408, 783, 166, 541, 948, 299, 706, 57, 464, 839, 222, 613, 988, 371, 746, 129, 504, 911, 262, 669, 20, 427, 818, 169, 576, 951, 334, 709, 92, 467, 874, 225, 632, 1023, 373, 781, 131, 539, 913, 297, 671, 55, 429, 837, 204, 578, 986, 336, 744, 94, 502, 876, 260, 634, 18, 409, 782, 167, 540, 949, 298, 707, 56, 465, 838, 223, 614, 987, 372, 745, 130, 503, 912, 261, 670, 19, 428, 819, 168, 577, 950, 335, 708, 93, 466, 875, 224, 633 }; + const uint8_t coordsX[NUM_PIXELS] { 130, 157, 169, 178, 185, 192, 197, 201, 204, 207, 209, 211, 212, 212, 211, 210, 209, 206, 204, 190, 194, 197, 200, 202, 203, 204, 204, 204, 203, 201, 198, 195, 191, 186, 180, 172, 162, 146, 152, 165, 173, 180, 185, 189, 192, 194, 196, 197, 197, 196, 195, 193, 191, 188, 184, 180, 165, 170, 174, 178, 181, 184, 186, 188, 189, 189, 189, 188, 186, 183, 179, 173, 166, 157, 138, 146, 159, 167, 172, 176, 179, 181, 182, 182, 181, 180, 178, 175, 172, 168, 164, 159, 154, 149, 138, 144, 149, 154, 159, 163, 166, 169, 172, 173, 174, 174, 174, 172, 169, 165, 159, 150, 140, 152, 158, 163, 165, 167, 167, 167, 165, 163, 161, 158, 154, 149, 145, 139, 134, 127, 121, 111, 117, 124, 130, 135, 140, 145, 149, 152, 155, 158, 159, 160, 160, 159, 156, 152, 144, 132, 145, 150, 152, 153, 153, 152, 150, 148, 144, 141, 136, 131, 126, 120, 114, 108, 101, 94, 77, 85, 92, 99, 105, 112, 117, 123, 128, 133, 137, 140, 143, 145, 147, 147, 146, 143, 137, 137, 140, 141, 141, 139, 137, 133, 130, 125, 120, 115, 109, 103, 97, 90, 83, 76, 69, 131, 135, 136, 135, 133, 130, 127, 123, 118, 113, 108, 102, 95, 89, 82, 75, 68, 61, 54, 40, 47, 54, 61, 68, 75, 82, 88, 95, 101, 107, 112, 117, 121, 125, 128, 130, 132, 131, 128, 127, 124, 120, 116, 111, 106, 101, 95, 89, 82, 75, 69, 62, 55, 48, 41, 34, 22, 29, 36, 42, 49, 56, 63, 70, 76, 83, 89, 95, 101, 107, 112, 116, 120, 124, 126, 123, 118, 113, 108, 103, 97, 91, 85, 78, 72, 65, 58, 51, 45, 38, 31, 25, 18, 10, 16, 22, 28, 34, 41, 48, 54, 61, 68, 74, 81, 87, 94, 100, 106, 112, 117, 124, 119, 111, 105, 98, 91, 85, 78, 71, 65, 58, 51, 45, 38, 32, 26, 20, 14, 8, 3, 3, 8, 13, 18, 24, 30, 36, 42, 49, 56, 62, 69, 76, 83, 90, 97, 105, 113, 118, 107, 98, 90, 82, 75, 68, 61, 54, 48, 41, 35, 29, 23, 18, 13, 8, 4, 0, 2, 6, 10, 14, 19, 24, 29, 35, 41, 47, 54, 60, 68, 75, 83, 91, 100, 111, 123, 104, 93, 84, 76, 68, 61, 54, 47, 41, 35, 30, 25, 20, 16, 12, 8, 5, 3, 111, 97, 87, 78, 70, 62, 55, 49, 43, 37, 32, 27, 22, 18, 15, 12, 9, 7, 6, 11, 12, 14, 16, 19, 22, 25, 29, 34, 39, 45, 51, 57, 64, 72, 81, 91, 104, 116, 97, 85, 76, 67, 60, 53, 47, 42, 37, 33, 29, 26, 23, 21, 19, 18, 18, 17, 26, 25, 24, 25, 25, 26, 28, 31, 33, 37, 41, 46, 51, 57, 64, 71, 80, 91, 106, 99, 86, 76, 68, 61, 55, 50, 46, 42, 39, 36, 34, 33, 32, 32, 32, 33, 34, 46, 43, 41, 40, 39, 39, 39, 40, 42, 44, 47, 51, 55, 60, 66, 73, 82, 93, 110, 102, 89, 79, 72, 65, 60, 56, 53, 50, 48, 47, 46, 46, 47, 48, 50, 52, 55, 69, 65, 62, 59, 57, 55, 54, 54, 54, 55, 57, 59, 62, 66, 71, 78, 86, 97, 119, 108, 93, 84, 78, 72, 68, 65, 63, 62, 61, 61, 62, 64, 66, 68, 71, 75, 79, 84, 95, 90, 85, 81, 78, 75, 72, 70, 69, 69, 69, 70, 72, 75, 79, 84, 92, 102, 115, 99, 91, 85, 81, 79, 77, 76, 76, 77, 79, 81, 83, 87, 91, 95, 100, 105, 111, 109, 98, 92, 88, 86, 84, 84, 84, 85, 87, 89, 92, 96, 100, 105, 110, 116, 122, 128, 138, 132, 126, 120, 114, 109, 105, 101, 98, 95, 93, 91, 91, 91, 92, 95, 99, 106, 115, 106, 101, 99, 98, 98, 99, 100, 103, 106, 110, 114, 118, 124, 129, 135, 142, 148, 155, 165, 158, 151, 145, 138, 133, 127, 122, 118, 114, 110, 108, 106, 104, 104, 105, 108, 113, 122, 114, 111, 110, 111, 112, 114, 117, 121, 125, 130, 135, 141, 147, 153, 160, 167, 174, 181, 197, 189, 182, 175, 168, 161, 155, 149, 143, 138, 133, 128, 124, 121, 118, 116, 116, 116, 120, 121, 121, 122, 124, 127, 130, 135, 139, 145, 150, 156, 162, 169, 176, 183, 190, 197, 204, 218, 211, 203, 196, 189, 182, 176, 169, 163, 157, 151, 145, 140, 136, 132, 128, 126, 125, 125, 127, 129, 132, 136, 140, 145, 151, 156, 162, 169, 175, 182, 188, 195, 202, 209, 216, 223, 234, 228, 221, 214, 207, 201, 194, 187, 180, 174, 167, 161, 155, 150, 144, 140, 135, 131, 128, 131, 137, 142, 147, 153, 159, 165, 171, 178, 185, 191, 198, 205, 212, 218, 225, 231, 237, 243, 136, 143, 149, 155, 162, 168, 175, 182, 188, 195, 202, 208, 215, 221, 228, 234, 240, 245, 251, 246, 241, 235, 230, 224, 217, 211, 204, 198, 191, 184, 177, 170, 164, 157, 150, 142, 133, 139, 149, 157, 164, 172, 179, 186, 193, 200, 206, 213, 219, 225, 231, 236, 241, 246, 251, 255, 253, 250, 245, 241, 236, 231, 225, 220, 213, 207, 200, 194, 187, 179, 172, 164, 156, 146, 139, 153, 162, 171, 179, 187, 194, 201, 207, 213, 219, 225, 230, 235, 240, 244, 247, 251, 253, 249, 247, 244, 241, 237, 233, 229, 224, 218, 212, 206, 200, 193, 185, 178, 169, 159, 147, 135, 154, 166, 175, 183, 191, 198, 205, 211, 216, 222, 226, 231, 234, 238, 241, 243, 245, 246, 240, 240, 239, 238, 236, 234, 231, 227, 223, 219, 214, 208, 202, 196, 189, 181, 171, 161, 146, 154, 167, 177, 185, 192, 199, 205, 210, 215, 219, 223, 226, 229, 231, 232, 233, 233, 233, 224, 225, 226, 226, 226, 225, 223, 221, 218, 215, 211, 206, 201, 195, 188, 181, 171, 160, 142, 151, 165, 175, 184, 191, 197, 202, 206, 210, 213, 215, 217, 218, 219, 219, 218, 217, 215 }; + const uint8_t coordsY[NUM_PIXELS] { 127, 125, 123, 119, 115, 110, 105, 99, 93, 87, 81, 74, 68, 61, 54, 47, 40, 33, 27, 16, 23, 29, 36, 42, 49, 56, 63, 69, 76, 82, 89, 95, 101, 106, 111, 116, 120, 124, 120, 115, 109, 103, 97, 91, 85, 78, 72, 65, 58, 52, 45, 38, 32, 26, 19, 13, 6, 11, 17, 23, 29, 35, 42, 48, 55, 62, 69, 75, 82, 89, 95, 101, 108, 114, 123, 117, 108, 101, 94, 87, 80, 73, 66, 59, 53, 46, 40, 33, 27, 21, 16, 10, 5, 1, 2, 6, 10, 15, 21, 26, 32, 38, 45, 51, 58, 65, 72, 79, 86, 93, 101, 110, 116, 104, 95, 86, 78, 71, 64, 57, 50, 44, 38, 32, 26, 21, 16, 11, 7, 3, 0, 3, 6, 9, 13, 17, 22, 27, 32, 38, 44, 50, 57, 64, 72, 79, 88, 97, 109, 121, 102, 91, 81, 73, 65, 58, 51, 45, 39, 34, 29, 24, 20, 16, 12, 9, 7, 5, 9, 10, 12, 14, 16, 19, 23, 27, 31, 36, 41, 47, 53, 60, 67, 75, 84, 95, 110, 102, 89, 79, 70, 63, 56, 50, 44, 39, 34, 30, 26, 23, 21, 19, 17, 16, 16, 114, 95, 84, 74, 66, 59, 53, 47, 42, 38, 34, 31, 28, 26, 24, 23, 23, 23, 23, 33, 31, 30, 30, 30, 30, 32, 33, 36, 39, 42, 47, 51, 57, 63, 71, 79, 90, 104, 98, 85, 76, 68, 62, 56, 51, 47, 44, 41, 39, 38, 37, 37, 37, 38, 40, 42, 54, 51, 49, 47, 45, 45, 44, 45, 46, 47, 50, 53, 57, 61, 67, 74, 82, 92, 109, 102, 89, 80, 73, 67, 62, 59, 56, 54, 53, 52, 52, 53, 54, 56, 58, 61, 64, 79, 75, 71, 67, 65, 62, 61, 60, 59, 60, 61, 62, 65, 69, 73, 79, 87, 97, 117, 108, 94, 86, 80, 75, 72, 69, 68, 67, 67, 68, 69, 71, 74, 77, 80, 85, 89, 95, 105, 100, 95, 90, 86, 83, 80, 77, 76, 75, 74, 75, 76, 78, 82, 86, 93, 103, 114, 101, 93, 88, 85, 83, 82, 82, 82, 84, 86, 88, 92, 96, 100, 105, 110, 116, 122, 132, 126, 120, 115, 109, 105, 101, 97, 94, 92, 90, 89, 89, 90, 92, 95, 100, 109, 124, 108, 102, 98, 96, 96, 96, 97, 99, 102, 105, 109, 114, 119, 124, 130, 136, 142, 149, 116, 108, 105, 103, 102, 103, 105, 107, 110, 113, 118, 122, 127, 133, 139, 145, 152, 159, 166, 175, 168, 161, 154, 148, 142, 136, 130, 126, 121, 117, 114, 111, 110, 109, 109, 111, 115, 122, 116, 114, 114, 116, 118, 121, 124, 128, 133, 138, 144, 150, 156, 162, 169, 176, 183, 191, 205, 198, 191, 184, 177, 170, 163, 157, 151, 145, 140, 135, 131, 127, 124, 121, 120, 119, 121, 123, 124, 126, 129, 132, 136, 141, 146, 152, 158, 164, 170, 177, 184, 191, 198, 205, 212, 225, 218, 211, 204, 197, 190, 183, 177, 170, 164, 158, 152, 146, 141, 137, 133, 130, 127, 126, 129, 132, 136, 141, 146, 151, 157, 163, 169, 175, 182, 189, 195, 202, 209, 216, 223, 229, 239, 233, 227, 220, 214, 207, 200, 193, 187, 180, 173, 167, 161, 155, 149, 144, 139, 134, 128, 133, 140, 146, 152, 158, 164, 170, 177, 184, 190, 197, 204, 210, 217, 223, 230, 236, 241, 247, 248, 243, 237, 232, 226, 220, 213, 207, 200, 193, 187, 180, 173, 166, 160, 153, 146, 139, 134, 145, 153, 160, 168, 175, 182, 189, 195, 202, 209, 215, 221, 227, 233, 238, 243, 248, 253, 141, 151, 160, 168, 175, 183, 190, 197, 203, 210, 216, 222, 228, 233, 238, 243, 247, 251, 255, 252, 249, 246, 242, 237, 232, 227, 222, 216, 210, 204, 197, 190, 183, 175, 167, 158, 148, 141, 155, 165, 174, 182, 189, 196, 203, 209, 215, 221, 226, 231, 235, 239, 243, 246, 249, 251, 246, 245, 242, 240, 236, 233, 229, 224, 219, 214, 208, 202, 195, 188, 180, 171, 161, 149, 137, 156, 167, 177, 185, 193, 199, 206, 211, 217, 221, 226, 229, 233, 235, 238, 239, 241, 241, 234, 235, 234, 234, 232, 231, 228, 225, 222, 218, 213, 208, 203, 196, 189, 182, 173, 162, 147, 154, 167, 177, 185, 193, 199, 205, 209, 214, 217, 221, 223, 225, 226, 227, 228, 227, 226, 216, 218, 219, 220, 220, 220, 219, 217, 215, 212, 209, 205, 200, 195, 188, 181, 172, 160, 143, 151, 165, 175, 183, 190, 195, 200, 204, 207, 209, 211, 212, 213, 213, 212, 211, 209, 207, 194, 198, 200, 203, 204, 205, 206, 206, 205, 203, 201, 198, 194, 190, 184, 177, 169, 157, 133, 146, 161, 171, 178, 184, 188, 192, 195, 197, 198, 198, 198, 197, 196, 194, 191, 188, 184, 180, 152, 164, 172, 178, 182, 186, 188, 190, 191, 191, 190, 189, 187, 185, 182, 178, 174, 170, 154, 159, 164, 168, 172, 176, 178, 181, 182, 183, 183, 183, 181, 179, 176, 171, 165, 156, 139, 146, 157, 164, 169, 172, 174, 176, 176, 175, 174, 172, 170, 167, 163, 159, 154, 149, 143, 137, 127, 133, 139, 144, 149, 154, 158, 161, 164, 166, 168, 168, 168, 167, 165, 162, 157, 149, 139, 150, 155, 159, 161, 161, 161, 160, 158, 156, 153, 149, 145, 140, 135, 129, 123, 116, 110, 100, 107, 113, 119, 125, 131, 136, 140, 144, 148, 151, 153, 154, 155, 154, 152, 149, 142, 132, 142, 146, 148, 148, 147, 146, 143, 140, 136, 132, 127, 122, 116, 110, 104, 97, 90, 83, 67, 75, 82, 89, 95, 102, 108, 114, 119, 124, 129, 133, 136, 139, 141, 142, 142, 140, 136, 135, 137, 137, 135, 133, 130, 126, 122, 117, 112, 106, 100, 94, 87, 81, 74, 66, 59, 45, 52, 59, 66, 73, 80, 87, 93, 99, 105, 111, 116, 120, 124, 128, 130, 132, 132, 130, 129, 128, 126, 123, 119, 115, 110, 105, 99, 93, 87, 80, 74, 67, 60, 53, 46, 39 }; + const uint8_t angles[NUM_PIXELS] { 255, 2, 4, 6, 8, 10, 12, 14, 16, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 43, 41, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 9, 7, 5, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 34, 36, 38, 40, 42, 44, 46, 51, 49, 47, 45, 43, 41, 39, 37, 35, 33, 31, 29, 27, 24, 22, 20, 18, 16, 14, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 47, 49, 51, 53, 55, 57, 60, 58, 56, 54, 52, 50, 48, 46, 44, 42, 39, 37, 35, 33, 31, 29, 27, 25, 28, 30, 32, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 62, 64, 66, 69, 67, 65, 63, 61, 59, 57, 54, 52, 50, 48, 46, 44, 42, 40, 38, 36, 34, 37, 39, 41, 43, 45, 47, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 80, 78, 76, 74, 72, 70, 67, 65, 63, 61, 59, 57, 55, 53, 51, 49, 47, 45, 43, 48, 50, 52, 54, 56, 58, 60, 62, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 51, 53, 55, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 85, 87, 89, 94, 92, 90, 88, 86, 84, 82, 80, 77, 75, 73, 71, 69, 67, 65, 63, 61, 59, 57, 62, 64, 66, 68, 70, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 103, 101, 99, 97, 95, 93, 90, 88, 86, 84, 82, 80, 78, 76, 74, 72, 70, 68, 66, 71, 73, 75, 77, 79, 81, 83, 85, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 112, 110, 108, 105, 103, 101, 99, 97, 95, 93, 91, 89, 87, 85, 83, 81, 78, 76, 74, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 103, 105, 107, 109, 111, 113, 115, 117, 120, 118, 116, 114, 112, 110, 108, 106, 104, 102, 100, 98, 96, 93, 91, 89, 87, 85, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113, 116, 118, 120, 122, 124, 126, 129, 127, 125, 123, 121, 119, 117, 115, 113, 111, 108, 106, 104, 102, 100, 98, 96, 94, 97, 99, 101, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 131, 133, 135, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 124, 126, 128, 130, 132, 134, 136, 138, 140, 143, 141, 139, 137, 135, 133, 131, 129, 127, 125, 123, 121, 119, 116, 114, 112, 110, 108, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 139, 141, 143, 145, 147, 149, 154, 152, 150, 148, 146, 144, 142, 140, 138, 136, 134, 132, 129, 127, 125, 123, 121, 119, 117, 122, 124, 127, 129, 131, 133, 135, 137, 139, 141, 143, 145, 147, 149, 151, 154, 156, 158, 163, 161, 159, 157, 155, 153, 151, 149, 147, 144, 142, 140, 138, 136, 134, 132, 130, 128, 126, 131, 133, 135, 137, 139, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 172, 170, 168, 166, 164, 162, 159, 157, 155, 153, 151, 149, 147, 145, 143, 141, 139, 137, 135, 140, 142, 144, 146, 148, 150, 152, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 177, 181, 179, 177, 174, 172, 170, 168, 166, 164, 162, 160, 158, 156, 154, 152, 150, 147, 145, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 170, 172, 174, 176, 178, 180, 182, 184, 186, 154, 156, 158, 160, 162, 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, 185, 187, 189, 192, 195, 193, 191, 189, 187, 185, 182, 180, 178, 176, 174, 172, 170, 168, 166, 164, 162, 160, 163, 165, 167, 169, 171, 173, 175, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 204, 202, 200, 197, 195, 193, 191, 189, 187, 185, 183, 181, 179, 177, 175, 173, 170, 168, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 193, 195, 197, 199, 201, 203, 205, 207, 209, 215, 212, 210, 208, 206, 204, 202, 200, 198, 196, 194, 192, 190, 188, 186, 183, 181, 179, 177, 183, 185, 187, 189, 191, 193, 195, 197, 199, 201, 203, 205, 208, 210, 212, 214, 216, 218, 223, 221, 219, 217, 215, 213, 211, 209, 207, 205, 203, 201, 198, 196, 194, 192, 190, 188, 186, 191, 193, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 223, 225, 227, 232, 230, 228, 226, 224, 222, 220, 218, 216, 213, 211, 209, 207, 205, 203, 201, 199, 197, 195, 200, 202, 204, 206, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231, 233, 235, 238, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 231, 233, 235, 237, 239, 241, 246, 244, 242, 240, 238, 236, 234, 232, 230, 228, 226, 224, 221, 219, 217, 215, 213, 211, 209, 214, 216, 219, 221, 223, 225, 227, 229, 231, 233, 235, 237, 239, 241, 243, 246, 248, 250, 252, 0, 253, 251, 249, 247, 245, 243, 241, 239, 236, 234, 232, 230, 228, 226, 224, 222, 220, 223, 225, 227, 229, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 1, 3, 5, 9, 7, 5, 3, 0, 254, 251, 249, 247, 245, 243, 241, 239, 237, 235, 233, 231, 229, 232, 234, 236, 238, 240, 242, 244, 247, 249, 251, 253, 255, 2, 4, 6, 8, 10, 12, 14, 20, 18, 16, 13, 11, 9, 7, 5, 3, 1, 254, 252, 250, 248, 246, 244, 242, 240, 237, 243, 245, 247, 249, 251, 253, 0, 2, 4, 6, 8, 11, 13, 15, 17, 19, 21, 23, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 1, 255, 252, 250, 248, 246, 252, 254, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 26, 28, 30, 32 }; + const uint8_t radius[NUM_PIXELS] { 0, 55, 80, 99, 115, 130, 142, 154, 165, 176, 185, 195, 204, 212, 220, 228, 236, 244, 251, 253, 246, 239, 231, 224, 215, 207, 198, 189, 179, 169, 159, 147, 135, 121, 106, 88, 66, 32, 47, 75, 95, 112, 126, 139, 152, 163, 173, 183, 193, 202, 210, 219, 227, 234, 242, 249, 252, 245, 237, 230, 222, 213, 205, 196, 187, 177, 167, 156, 144, 131, 117, 102, 83, 59, 18, 39, 69, 91, 108, 123, 136, 149, 160, 171, 181, 190, 200, 208, 217, 225, 233, 240, 247, 254, 250, 243, 235, 228, 220, 211, 203, 194, 185, 175, 164, 153, 141, 128, 114, 97, 78, 52, 27, 63, 86, 104, 120, 133, 146, 158, 168, 179, 188, 197, 206, 215, 223, 231, 238, 246, 253, 248, 241, 234, 226, 218, 210, 201, 192, 182, 172, 162, 150, 138, 125, 110, 93, 73, 44, 9, 57, 81, 100, 116, 130, 143, 155, 166, 176, 186, 195, 204, 213, 221, 229, 237, 244, 251, 254, 247, 239, 232, 224, 216, 207, 199, 190, 180, 170, 159, 148, 135, 122, 106, 89, 67, 35, 49, 76, 96, 112, 127, 140, 152, 163, 174, 184, 193, 202, 211, 219, 227, 235, 242, 249, 22, 61, 84, 103, 118, 132, 145, 157, 167, 178, 187, 197, 205, 214, 222, 230, 238, 245, 252, 255, 248, 240, 233, 225, 217, 209, 200, 191, 181, 171, 161, 149, 137, 124, 109, 92, 70, 41, 54, 79, 98, 115, 129, 142, 154, 165, 175, 185, 194, 203, 212, 220, 228, 236, 243, 251, 253, 246, 239, 231, 223, 215, 207, 198, 189, 179, 169, 158, 147, 134, 120, 105, 87, 65, 30, 46, 74, 94, 111, 126, 139, 151, 162, 173, 183, 192, 201, 210, 218, 226, 234, 242, 249, 252, 244, 237, 229, 221, 213, 205, 196, 187, 177, 166, 156, 144, 131, 117, 101, 82, 58, 15, 37, 68, 90, 107, 122, 136, 148, 160, 170, 181, 190, 199, 208, 216, 224, 232, 240, 247, 254, 250, 243, 235, 227, 219, 211, 203, 194, 184, 174, 164, 153, 141, 128, 113, 97, 77, 51, 25, 62, 85, 103, 119, 133, 146, 157, 168, 178, 188, 197, 206, 214, 223, 230, 238, 245, 253, 248, 241, 233, 226, 218, 209, 201, 191, 182, 172, 161, 150, 138, 125, 110, 93, 72, 43, 4, 56, 80, 99, 116, 130, 143, 154, 166, 176, 186, 195, 204, 212, 221, 229, 236, 244, 251, 33, 66, 88, 106, 121, 135, 147, 159, 170, 180, 189, 198, 207, 216, 224, 232, 239, 246, 254, 249, 242, 234, 227, 219, 210, 202, 193, 183, 173, 163, 152, 140, 127, 112, 95, 75, 48, 19, 60, 83, 102, 118, 132, 144, 156, 167, 177, 187, 196, 205, 214, 222, 230, 237, 245, 252, 255, 248, 240, 233, 225, 217, 208, 200, 191, 181, 171, 160, 149, 137, 123, 108, 91, 70, 39, 53, 78, 98, 114, 129, 142, 153, 165, 175, 185, 194, 203, 212, 220, 228, 236, 243, 250, 253, 246, 238, 231, 223, 215, 206, 198, 188, 179, 169, 158, 146, 134, 120, 104, 86, 64, 28, 45, 73, 94, 111, 125, 139, 151, 162, 173, 183, 192, 201, 210, 218, 226, 234, 241, 249, 251, 244, 237, 229, 221, 213, 204, 195, 186, 176, 166, 155, 143, 131, 116, 100, 81, 57, 12, 35, 67, 89, 107, 122, 136, 148, 159, 170, 180, 190, 199, 208, 216, 224, 232, 240, 247, 254, 250, 242, 235, 227, 219, 211, 202, 193, 184, 174, 164, 152, 140, 127, 113, 96, 76, 50, 23, 61, 84, 103, 119, 132, 145, 157, 168, 178, 188, 197, 206, 214, 222, 230, 238, 245, 252, 41, 71, 92, 109, 124, 137, 150, 161, 172, 182, 191, 200, 209, 217, 225, 233, 241, 248, 255, 251, 243, 236, 228, 220, 212, 204, 195, 185, 175, 165, 154, 142, 129, 115, 99, 80, 54, 31, 65, 87, 105, 121, 134, 147, 158, 169, 179, 189, 198, 207, 215, 223, 231, 239, 246, 253, 249, 242, 234, 226, 218, 210, 201, 192, 183, 173, 163, 151, 139, 126, 111, 95, 74, 47, 17, 59, 83, 101, 117, 131, 144, 156, 167, 177, 187, 196, 205, 213, 222, 229, 237, 244, 252, 254, 247, 240, 232, 225, 216, 208, 199, 190, 181, 171, 160, 149, 136, 123, 108, 90, 69, 38, 52, 78, 97, 114, 128, 141, 153, 164, 175, 184, 194, 203, 211, 220, 228, 235, 243, 250, 253, 246, 238, 231, 223, 215, 206, 197, 188, 178, 168, 157, 146, 133, 119, 104, 86, 63, 26, 43, 72, 93, 110, 125, 138, 150, 162, 172, 182, 192, 201, 209, 218, 226, 233, 241, 248, 251, 244, 236, 229, 221, 213, 204, 195, 186, 176, 166, 155, 143, 130, 116, 100, 81, 56, 7, 34, 66, 88, 106, 121, 135, 147, 159, 170, 180, 189, 199, 207, 216, 224, 232, 239, 247, 254, 49, 76, 96, 112, 127, 140, 152, 163, 174, 184, 193, 202, 211, 219, 227, 235, 242, 249, 252, 245, 237, 230, 222, 214, 205, 196, 187, 177, 167, 156, 145, 132, 118, 102, 84, 60, 21, 40, 70, 91, 108, 123, 137, 149, 161, 171, 181, 191, 200, 209, 217, 225, 233, 240, 248, 255, 250, 243, 236, 228, 220, 212, 203, 194, 185, 175, 165, 154, 142, 129, 114, 98, 79, 53, 29, 64, 87, 105, 120, 134, 146, 158, 169, 179, 189, 198, 207, 215, 223, 231, 239, 246, 253, 249, 241, 234, 226, 218, 210, 201, 192, 183, 173, 162, 151, 139, 126, 111, 94, 73, 45, 13, 58, 82, 101, 117, 131, 144, 155, 166, 177, 186, 196, 205, 213, 221, 229, 237, 244, 251, 254, 247, 240, 232, 224, 216, 208, 199, 190, 180, 170, 160, 148, 136, 122, 107, 89, 68, 36, 50, 77, 97, 113, 128, 141, 153, 164, 174, 184, 193, 202, 211, 219, 227, 235, 242, 250, 252, 245, 238, 230, 222, 214, 206, 197, 188, 178, 168, 157, 145, 133, 119, 103, 85, 62, 24, 42, 71, 92, 109, 124, 138, 150, 161, 172, 182, 191, 200, 209, 217, 225, 233, 241, 248 }; + const uint8_t (&radiusProxy)[NUM_PIXELS] = radius; +#elif defined(PRODUCT_FIBONACCI512) const uint16_t physicalToFibonacci[NUM_PIXELS] { 510, 476, 442, 408, 374, 340, 306, 272, 238, 204, 170, 136, 102, 68, 34, 0, 13, 47, 81, 115, 149, 183, 217, 251, 285, 319, 353, 387, 421, 455, 489, 502, 468, 434, 400, 366, 332, 298, 264, 230, 196, 162, 128, 94, 60, 26, 5, 39, 73, 107, 141, 175, 209, 243, 277, 311, 345, 379, 413, 447, 481, 494, 460, 426, 392, 358, 324, 290, 256, 222, 188, 154, 120, 86, 52, 18, 31, 65, 99, 133, 167, 201, 235, 269, 303, 337, 371, 405, 439, 473, 507, 486, 452, 418, 384, 350, 316, 282, 248, 214, 180, 146, 112, 78, 44, 10, 23, 57, 91, 125, 159, 193, 227, 261, 295, 329, 363, 397, 431, 465, 499, 478, 444, 410, 376, 342, 308, 274, 240, 206, 172, 138, 104, 70, 36, 2, 15, 49, 83, 117, 151, 185, 219, 253, 287, 321, 355, 389, 423, 457, 491, 504, 470, 436, 402, 368, 334, 300, 266, 232, 198, 164, 130, 96, 62, 28, 7, 41, 75, 109, 143, 177, 211, 245, 279, 313, 347, 381, 415, 449, 483, 496, 462, 428, 394, 360, 326, 292, 258, 224, 190, 156, 122, 88, 54, 20, 33, 67, 101, 135, 169, 203, 237, 271, 305, 339, 373, 407, 441, 475, 509, 488, 454, 420, 386, 352, 318, 284, 250, 216, 182, 148, 114, 80, 46, 12, 25, 59, 93, 127, 161, 195, 229, 263, 297, 331, 365, 399, 433, 467, 501, 480, 446, 412, 378, 344, 310, 276, 242, 208, 174, 140, 106, 72, 38, 4, 17, 51, 85, 119, 153, 187, 221, 255, 289, 323, 357, 391, 425, 459, 493, 506, 472, 438, 404, 370, 336, 302, 268, 234, 200, 166, 132, 98, 64, 30, 9, 43, 77, 111, 145, 179, 213, 247, 281, 315, 349, 383, 417, 451, 485, 498, 464, 430, 396, 362, 328, 294, 260, 226, 192, 158, 124, 90, 56, 22, 1, 35, 69, 103, 137, 171, 205, 239, 273, 307, 341, 375, 409, 443, 477, 511, 490, 456, 422, 388, 354, 320, 286, 252, 218, 184, 150, 116, 82, 48, 14, 27, 61, 95, 129, 163, 197, 231, 265, 299, 333, 367, 401, 435, 469, 503, 482, 448, 414, 380, 346, 312, 278, 244, 210, 176, 142, 108, 74, 40, 6, 19, 53, 87, 121, 155, 189, 223, 257, 291, 325, 359, 393, 427, 461, 495, 508, 474, 440, 406, 372, 338, 304, 270, 236, 202, 168, 134, 100, 66, 32, 11, 45, 79, 113, 147, 181, 215, 249, 283, 317, 351, 385, 419, 453, 487, 500, 466, 432, 398, 364, 330, 296, 262, 228, 194, 160, 126, 92, 58, 24, 3, 37, 71, 105, 139, 173, 207, 241, 275, 309, 343, 377, 411, 445, 479, 492, 458, 424, 390, 356, 322, 288, 254, 220, 186, 152, 118, 84, 50, 16, 29, 63, 97, 131, 165, 199, 233, 267, 301, 335, 369, 403, 437, 471, 505, 484, 450, 416, 382, 348, 314, 280, 246, 212, 178, 144, 110, 76, 42, 8, 21, 55, 89, 123, 157, 191, 225, 259, 293, 327, 361, 395, 429, 463, 497 }; const uint16_t fibonacciToPhysical[NUM_PIXELS] { 15, 316, 135, 437, 255, 46, 376, 166, 496, 286, 105, 407, 225, 16, 346, 136, 466, 256, 75, 377, 195, 497, 315, 106, 436, 226, 45, 347, 165, 467, 285, 76, 406, 196, 14, 317, 134, 438, 254, 47, 375, 167, 495, 287, 104, 408, 224, 17, 345, 137, 465, 257, 74, 378, 194, 498, 314, 107, 435, 227, 44, 348, 164, 468, 284, 77, 405, 197, 13, 318, 133, 439, 253, 48, 374, 168, 494, 288, 103, 409, 223, 18, 344, 138, 464, 258, 73, 379, 193, 499, 313, 108, 434, 228, 43, 349, 163, 469, 283, 78, 404, 198, 12, 319, 132, 440, 252, 49, 373, 169, 493, 289, 102, 410, 222, 19, 343, 139, 463, 259, 72, 380, 192, 500, 312, 109, 433, 229, 42, 350, 162, 470, 282, 79, 403, 199, 11, 320, 131, 441, 251, 50, 372, 170, 492, 290, 101, 411, 221, 20, 342, 140, 462, 260, 71, 381, 191, 501, 311, 110, 432, 230, 41, 351, 161, 471, 281, 80, 402, 200, 10, 321, 130, 442, 250, 51, 371, 171, 491, 291, 100, 412, 220, 21, 341, 141, 461, 261, 70, 382, 190, 502, 310, 111, 431, 231, 40, 352, 160, 472, 280, 81, 401, 201, 9, 322, 129, 443, 249, 52, 370, 172, 490, 292, 99, 413, 219, 22, 340, 142, 460, 262, 69, 383, 189, 503, 309, 112, 430, 232, 39, 353, 159, 473, 279, 82, 400, 202, 8, 323, 128, 444, 248, 53, 369, 173, 489, 293, 98, 414, 218, 23, 339, 143, 459, 263, 68, 384, 188, 504, 308, 113, 429, 233, 38, 354, 158, 474, 278, 83, 399, 203, 7, 324, 127, 445, 247, 54, 368, 174, 488, 294, 97, 415, 217, 24, 338, 144, 458, 264, 67, 385, 187, 505, 307, 114, 428, 234, 37, 355, 157, 475, 277, 84, 398, 204, 6, 325, 126, 446, 246, 55, 367, 175, 487, 295, 96, 416, 216, 25, 337, 145, 457, 265, 66, 386, 186, 506, 306, 115, 427, 235, 36, 356, 156, 476, 276, 85, 397, 205, 5, 326, 125, 447, 245, 56, 366, 176, 486, 296, 95, 417, 215, 26, 336, 146, 456, 266, 65, 387, 185, 507, 305, 116, 426, 236, 35, 357, 155, 477, 275, 86, 396, 206, 4, 327, 124, 448, 244, 57, 365, 177, 485, 297, 94, 418, 214, 27, 335, 147, 455, 267, 64, 388, 184, 508, 304, 117, 425, 237, 34, 358, 154, 478, 274, 87, 395, 207, 3, 328, 123, 449, 243, 58, 364, 178, 484, 298, 93, 419, 213, 28, 334, 148, 454, 268, 63, 389, 183, 509, 303, 118, 424, 238, 33, 359, 153, 479, 273, 88, 394, 208, 2, 329, 122, 450, 242, 59, 363, 179, 483, 299, 92, 420, 212, 29, 333, 149, 453, 269, 62, 390, 182, 510, 302, 119, 423, 239, 32, 360, 152, 480, 272, 89, 393, 209, 1, 330, 121, 451, 241, 60, 362, 180, 482, 300, 91, 421, 211, 30, 332, 150, 452, 270, 61, 391, 181, 511, 301, 120, 422, 240, 31, 361, 151, 481, 271, 90, 392, 210, 0, 331 }; const uint8_t coordsX[NUM_PIXELS] { 170, 178, 185, 191, 196, 199, 202, 202, 202, 200, 196, 191, 184, 175, 161, 132, 148, 166, 176, 183, 188, 190, 192, 191, 190, 186, 182, 176, 170, 162, 153, 125, 136, 145, 154, 161, 168, 173, 177, 180, 181, 181, 178, 174, 167, 155, 139, 157, 164, 169, 170, 170, 168, 165, 160, 154, 147, 139, 129, 119, 109, 82, 93, 104, 114, 124, 132, 140, 147, 152, 157, 159, 160, 159, 155, 145, 145, 150, 150, 149, 146, 141, 135, 127, 119, 110, 100, 90, 79, 68, 57, 45, 56, 66, 77, 87, 97, 107, 115, 123, 130, 135, 139, 142, 141, 136, 134, 134, 131, 126, 120, 113, 105, 96, 86, 76, 66, 56, 45, 35, 25, 18, 27, 37, 47, 57, 67, 77, 86, 95, 104, 112, 119, 124, 128, 129, 125, 120, 113, 105, 97, 88, 78, 69, 59, 50, 40, 31, 22, 14, 6, 0, 6, 12, 19, 27, 35, 44, 54, 63, 73, 82, 91, 101, 109, 118, 121, 108, 98, 88, 78, 69, 59, 50, 41, 33, 25, 18, 12, 7, 3, 6, 8, 11, 15, 20, 26, 33, 40, 48, 57, 67, 77, 87, 98, 111, 102, 89, 77, 67, 58, 49, 41, 34, 28, 23, 19, 16, 15, 14, 15, 26, 24, 23, 24, 26, 28, 33, 38, 44, 51, 60, 69, 80, 93, 111, 100, 85, 73, 64, 55, 49, 43, 39, 36, 34, 33, 34, 36, 39, 43, 58, 53, 49, 45, 44, 43, 44, 46, 50, 55, 61, 69, 79, 93, 116, 104, 87, 76, 68, 62, 58, 55, 54, 54, 55, 58, 62, 68, 74, 82, 108, 99, 90, 83, 77, 72, 68, 65, 64, 65, 67, 70, 76, 85, 97, 112, 94, 85, 80, 76, 75, 75, 77, 81, 85, 91, 98, 106, 115, 125, 153, 142, 131, 122, 113, 105, 99, 93, 89, 87, 85, 86, 89, 95, 106, 123, 105, 99, 96, 96, 98, 101, 106, 112, 119, 128, 137, 147, 157, 168, 180, 193, 182, 171, 161, 151, 141, 133, 125, 118, 113, 108, 106, 106, 108, 115, 116, 114, 115, 118, 123, 129, 137, 145, 154, 164, 174, 184, 195, 206, 216, 226, 216, 205, 195, 185, 175, 165, 156, 147, 139, 133, 127, 123, 121, 124, 127, 129, 134, 141, 148, 156, 165, 174, 184, 194, 204, 214, 224, 233, 242, 253, 246, 238, 229, 221, 211, 202, 192, 182, 173, 164, 155, 147, 140, 133, 134, 142, 151, 160, 169, 179, 188, 198, 207, 216, 225, 233, 241, 247, 253, 255, 251, 247, 241, 234, 227, 219, 210, 201, 192, 182, 173, 163, 153, 142, 134, 151, 163, 174, 184, 194, 203, 212, 220, 227, 233, 239, 243, 247, 249, 242, 242, 241, 238, 235, 230, 225, 218, 211, 203, 194, 184, 173, 161, 146, 155, 170, 182, 192, 201, 208, 215, 221, 226, 229, 231, 232, 232, 231, 228, 215, 219, 221, 223, 223, 221, 219, 215, 210, 204, 197, 188, 177, 164, 144, 154, 170, 182, 191, 198, 204, 208, 211, 212, 213, 212, 209, 205, 200, 194 }; diff --git a/esp8266-fastled-webserver/config.h b/esp8266-fastled-webserver/config.h index def55b1a..4408496e 100644 --- a/esp8266-fastled-webserver/config.h +++ b/esp8266-fastled-webserver/config.h @@ -26,6 +26,7 @@ #if !defined(BUILDING_USING_PLATFORMIO) #define PRODUCT_DEFAULT + // #define PRODUCT_FIBONACCI1024 // #define PRODUCT_FIBONACCI512 // #define PRODUCT_FIBONACCI256 // #define PRODUCT_FIBONACCI128 @@ -72,6 +73,8 @@ #include "./include/configs/product/fibonacci256.h" #elif defined(PRODUCT_FIBONACCI512) #include "./include/configs/product/fibonacci512.h" + #elif defined(PRODUCT_FIBONACCI1024) + #include "./include/configs/product/fibonacci1024.h" #elif defined(PRODUCT_ESP8266_THING) // aka parallel #include "./include/configs/product/esp8266_thing.h" #else @@ -152,6 +155,8 @@ // nothing to test here #elif (PARALLEL_OUTPUT_CHANNELS == 4) static_assert(NUM_PIXELS == (PIXELS_ON_DATA_PIN_1 + PIXELS_ON_DATA_PIN_2 + PIXELS_ON_DATA_PIN_3 + PIXELS_ON_DATA_PIN_4), ""); + #elif (PARALLEL_OUTPUT_CHANNELS == 5) + static_assert(NUM_PIXELS == (PIXELS_ON_DATA_PIN_1 + PIXELS_ON_DATA_PIN_2 + PIXELS_ON_DATA_PIN_3 + PIXELS_ON_DATA_PIN_4 + PIXELS_ON_DATA_PIN_5), ""); #elif (PARALLEL_OUTPUT_CHANNELS == 6) static_assert(NUM_PIXELS == (PIXELS_ON_DATA_PIN_1 + PIXELS_ON_DATA_PIN_2 + PIXELS_ON_DATA_PIN_3 + PIXELS_ON_DATA_PIN_4 + PIXELS_ON_DATA_PIN_5 + PIXELS_ON_DATA_PIN_6), ""); #else diff --git a/esp8266-fastled-webserver/include/configs/product/fibonacci1024.h b/esp8266-fastled-webserver/include/configs/product/fibonacci1024.h new file mode 100644 index 00000000..0b48e6f7 --- /dev/null +++ b/esp8266-fastled-webserver/include/configs/product/fibonacci1024.h @@ -0,0 +1,104 @@ +/* + ESP8266 FastLED WebServer: https://github.com/jasoncoon/esp8266-fastled-webserver + Copyright (C) Jason Coon + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ +#pragma once + +#if !defined(ESP8266_FASTLED_WEBSERVER_PRODUCT_FIB1024_MINI_H) +#define ESP8266_FASTLED_WEBSERVER_PRODUCT_FIB1024_MINI_H + +#if !defined(LED_TYPE) + #define LED_TYPE WS2812B +#endif +#if !defined(COLOR_ORDER) + #define COLOR_ORDER GRB +#endif +#if !defined(NUM_PIXELS) + #define NUM_PIXELS 1024 +#endif +#if !defined(AVAILABLE_MILLI_AMPS) + #define AVAILABLE_MILLI_AMPS 10000 // IMPORTANT: set the max milli-Amps of your power supply (4A = 4000mA) +#endif +#if !defined(MAX_MILLI_AMPS_PER_PIXEL) + #define MAX_MILLI_AMPS_PER_PIXEL 48 // IMPORTANT: set to larger value if necessary +#endif +#if !defined(FRAMES_PER_SECOND) + #define FRAMES_PER_SECOND 120 +#endif +#if !defined(DEFAULT_PATTERN_INDEX) + #define DEFAULT_PATTERN_INDEX 3 +#endif +#if !defined(DEFAULT_BRIGHTNESS_INDEX) + #define DEFAULT_BRIGHTNESS_INDEX 3 +#endif +#if !defined(DEFAULT_COLOR_CORRECTION) + #define DEFAULT_COLOR_CORRECTION TypicalSMD5050 +#endif +#if !defined(NAME_PREFIX) + #define NAME_PREFIX "Fibonacci1024-" +#endif +#if !defined(PRODUCT_FRIENDLY_NAME) + #define PRODUCT_FRIENDLY_NAME "Fibonacci1024" +#endif +#if !defined(IS_FIBONACCI) + #define IS_FIBONACCI 1 +#endif +#if !defined(HAS_COORDINATE_MAP) + #define HAS_COORDINATE_MAP 1 +#endif +#if !defined(PARALLEL_OUTPUT_CHANNELS) + #define PARALLEL_OUTPUT_CHANNELS 5 +#endif +#if !defined(PIXELS_ON_DATA_PIN_1) + #define PIXELS_ON_DATA_PIN_1 205 +#endif +#if !defined(PIXELS_ON_DATA_PIN_2) + #define PIXELS_ON_DATA_PIN_2 205 +#endif +#if !defined(PIXELS_ON_DATA_PIN_3) + #define PIXELS_ON_DATA_PIN_3 205 +#endif +#if !defined(PIXELS_ON_DATA_PIN_4) + #define PIXELS_ON_DATA_PIN_4 205 +#endif +#if !defined(PIXELS_ON_DATA_PIN_5) + #define PIXELS_ON_DATA_PIN_5 204 +#endif + +#if defined(ARDUINO_ARCH_ESP8266) + // This board uses different data pins.... + #if !defined(DATA_PIN) + #define DATA_PIN D5 // d1 mini + #endif + #if !defined(DATA_PIN_2) && PARALLEL_OUTPUT_CHANNELS >= 2 + #define DATA_PIN_2 D7 // d1 mini + #endif + #if !defined(DATA_PIN_3) && PARALLEL_OUTPUT_CHANNELS >= 3 + #define DATA_PIN_3 D6 // d1 mini + #endif + #if !defined(DATA_PIN_4) && PARALLEL_OUTPUT_CHANNELS >= 4 + #define DATA_PIN_4 D1 // d1 mini + #endif + #if !defined(DATA_PIN_5) && PARALLEL_OUTPUT_CHANNELS >= 5 + #define DATA_PIN_5 D2 // d1 mini + #endif +#elif defined(ARDUINO_ARCH_ESP32) + #error "F1024 currently only supports ESP8266" +#else + #error "F1024 currently only supports ESP8266" +#endif + +#endif // ESP8266_FASTLED_WEBSERVER_PRODUCT_FIB1024_MINI_H diff --git a/platformio.ini b/platformio.ini index 0bdb76aa..7740745b 100644 --- a/platformio.ini +++ b/platformio.ini @@ -17,8 +17,9 @@ [platformio] extra_configs = platformio_override.ini ; so users can easily override settings -default_envs = fastled_webserver__d1_mini, fib512__d1_mini, fib256__d1_mini, fib128__d1_mini, fib64_full__d1_mini, fib64_mini__d1_mini, fib32__d1_mini, esp_thing__d1_mini, kraken64__d1_mini, chamaeleon64__d1_mini, esp_thing__d1_mini, 1628_rings__d1_mini +default_envs = fastled_webserver__d1_mini, fib1024__d1_mini, fib512__d1_mini, fib256__d1_mini, fib128__d1_mini, fib64_full__d1_mini, fib64_mini__d1_mini, fib32__d1_mini, esp_thing__d1_mini, kraken64__d1_mini, chamaeleon64__d1_mini, esp_thing__d1_mini, 1628_rings__d1_mini ; default_envs = fastled_webserver +; default_envs = fib1024__d1_mini ; default_envs = fib512__d1_mini ; default_envs = fib256__d1_mini ; default_envs = fib128__d1_mini @@ -154,6 +155,12 @@ build_flags = ${common.build_flags_esp8266} -D PRODUCT_DEFAULT +[env:fib1024__d1_mini] +extends = common__d1_mini +build_flags = + ${common.build_flags_esp8266} + -D PRODUCT_FIBONACCI1024 + [env:fib512__d1_mini] extends = common__d1_mini build_flags =