@@ -41,6 +41,51 @@ extern CRGB leds[ NUM_LEDS ];
4141// This code, plus the supporting 80-byte table is much smaller
4242// and much faster than trying to calculate the pixel ID with code.
4343#define LAST_VISIBLE_LED 119
44- uint16_t XY (uint16_t x , uint16_t y , uint16_t width , uint16_t height );
45- extern XYMap myXYMap ;
44+ uint16_t XY (uint16_t x , uint16_t y , uint16_t width , uint16_t height )
45+ {
46+ (void )width ;
47+ (void )height ;
48+ // any out of bounds address maps to the first hidden pixel
49+ if ( (x >= kMatrixWidth ) || (y >= kMatrixHeight ) ) {
50+ return (LAST_VISIBLE_LED + 1 );
51+ }
52+
53+ // On the visual left of DiscoBandCamp, wearers right
54+ // +------------------------------------------
55+ // | 10 9 8 7 6 5 4 3 2 1 0
56+ // | . 20 19 18 17 16 15 14 13 12 11
57+ // | . . 29 28 27 26 25 24 23 22 21
58+ // | . . . 37 36 35 34 33 32 31 30
59+ // | . . . . 44 43 42 41 40 39 38
60+ // | . . . . . 50 49 48 47 46 45
61+ // | . . . . . . 55 54 53 52 51
62+ // | . . . . . . . 59 58 57 56
63+
64+ //this is how DiscoBandCamp works
65+ const uint8_t JacketTable [] = {
66+ 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0 , 145 ,
67+ 153 ,60 , 61 , 62 , 63 , 64 , 65 , 66 , 67 , 68 , 69 , 70 ,
68+ 120 ,11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20 , 146 ,
69+ 154 ,80 , 79 , 78 , 77 , 76 , 75 , 74 , 73 , 72 , 71 , 182 ,
70+ 121 ,127 ,21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 147 ,
71+ 155 ,89 , 88 , 87 , 86 , 85 , 84 , 83 , 82 , 81 , 176 ,183 ,
72+ 122 ,128 ,133 ,30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 148 ,
73+ 156 ,97 , 96 , 95 , 94 , 93 , 92 , 91 , 90 , 171 ,177 ,184 ,
74+ 123 ,129 ,134 ,135 ,38 , 39 , 40 , 41 , 42 , 43 , 44 , 149 ,
75+ 157 ,104 ,103 ,102 ,101 ,100 ,99 , 98 , 167 ,172 ,178 ,185 ,
76+ 124 ,130 ,134 ,136 ,139 ,45 , 46 , 47 , 48 , 49 , 50 , 150 ,
77+ 158 ,110 ,109 ,108 ,107 ,106 ,105 ,164 ,168 ,173 ,179 ,186 ,
78+ 125 ,131 ,134 ,137 ,140 ,142 ,51 , 52 , 53 , 54 , 55 , 151 ,
79+ 159 ,115 ,114 ,113 ,112 ,111 ,162 ,165 ,169 ,174 ,180 ,187 ,
80+ 126 ,132 ,134 ,138 ,141 ,143 ,144 ,56 , 57 , 58 , 59 , 152 ,
81+ 160 ,119 ,118 ,117 ,116 ,161 ,163 ,166 ,170 ,175 ,181 ,188 ,
82+ };
83+
84+ uint8_t i = (y * kMatrixWidth ) + x ;
85+ uint8_t j = JacketTable [i ];
86+ return j ;
87+ }
4688#endif
89+
90+ // Instantiate an XYMap object
91+ XYMap myXYMap = XYMap ::constructWithUserFunction (kMatrixWidth , kMatrixHeight , XY );
0 commit comments