#include "FastLED.h"
#define NUM_LEDS 180
#define DATA_PIN 12
#define WIDTH 55 //27
#define HEIGHT 6 //23
CRGB leds[NUM_LEDS];
const byte StarMap[] PROGMEM = {
180,180,180,180,180,180,180,180,180,180,180,180,180, 27,180,180,180,180,180,180,180,180,180,180,180,180,180,
180,180,180,180,180,180,180,180,180,180,180,180, 26,180, 28,180,180,180,180,180,180,180,180,180,180,180,180,
180,180,180,180,180,180,180,180,180,180,180, 25,180, 77,180, 29,180,180,180,180,180,180,180,180,180,180,180,
180,180,180,180,180,180,180,180,180,180, 24,180, 78,180, 76,180, 30,180,180,180,180,180,180,180,180,180,180,
180,180,180,180,180,180,180,180,180, 23,180, 79,180,117,180, 75,180, 31,180,180,180,180,180,180,180,180,180,
180,180,180,180,180,180,180,180, 22,180, 80,180,116,180,118,180, 74,180, 32,180,180,180,180,180,180,180,180,
180,180, 18,180, 19, 20,180, 21,180, 81,180,115,180,147,180,119,180, 73,180, 33,180, 34, 35,180, 36,180,180,
16, 17,180, 85, 84,180, 83,180, 82,180,114,180,148,180,146,180,120,180, 72,180, 71,180, 70, 69,180, 37, 38,
180, 15, 86,180,110,111,180,112,180,113,180,149,180,167,180,145,180,121,180,122,180,123,124,180, 68, 39,180,
180,180, 14, 87,180,180,152,180,151,150,180,180,166,180,168,180,180,144,143,180,142,180,180, 67, 40,180,180,
180,180,180, 13, 88,109,180,180,180,164,180,165,180,177,180,169,180,170,180,180,180,125, 66, 41,180,180,180,
180,180,180,180,180, 89,108,180,153,180,163,180,178,180,176,180,171,180,141,180,126, 65,180,180,180,180,180,
180,180,180,180, 12,180, 90,107,180,154,162,180,179,180,175,180,172,140,180,127, 64,180, 42,180,180,180,180,
180,180,180,180,180, 11,180,180,106,155,180,180,160,180,174,180,180,139,128,180,180, 43,180,180,180,180,180,
180,180,180,180,180, 10, 91,180,180,156,161,180,159,180,135,180,173,138,180,180, 63, 44,180,180,180,180,180,
180,180,180,180,180,180, 92,180,105,180,158,180,180,180,180,180,136,180,129,180, 62,180,180,180,180,180,180,
180,180,180,180,180, 9,180,104,180,157,101,180,100,180,134,180,133,137,180,130,180, 45,180,180,180,180,180,
180,180,180,180, 8,180, 93,180,102,180,180,180, 99,180, 55,180,180,180,132,180, 61,180, 46,180,180,180,180,
180,180,180,180,180, 94,180,103, 97,180, 98,180, 0,180, 54,180, 56,180, 57,131,180, 60,180,180,180,180,180,
180,180,180,180, 7,180,180, 96,180,180, 1,180,180,180,180,180, 53,180,180, 58,180,180, 47,180,180,180,180,
180,180,180,180,180, 95,180,180, 2,180,180,180,180,180,180,180,180,180, 52,180,180, 59,180,180,180,180,180,
180,180,180,180, 6,180, 3,180,180,180,180,180,180,180,180,180,180,180,180,180, 51,180, 48,180,180,180,180,
180,180,180, 5,180, 4,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, 50,180, 49,180,180,180
};
const byte StarCircular[] PROGMEM = { //55x11
180, 180, 180, 180, 180, 49, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 38, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 27, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 16, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 5, 180, 180, 180, 180, 180,
180, 180, 180, 180, 50, 180, 48, 180, 180, 180, 180, 180, 180, 180, 180, 39, 180, 37, 180, 180, 180, 180, 180, 180, 180, 180, 28, 180, 26, 180, 180, 180, 180, 180, 180, 180, 180, 17, 180, 15, 180, 180, 180, 180, 180, 180, 180, 180, 6, 180, 4, 180, 180, 180, 180,
180, 180, 180, 51, 180, 59, 180, 47, 180, 180, 180, 180, 180, 180, 40, 180, 68, 180, 36, 180, 180, 180, 180, 180, 180, 29, 180, 77, 180, 25, 180, 180, 180, 180, 180, 180, 18, 180, 86, 180, 14, 180, 180, 180, 180, 180, 180, 7, 180, 95, 180, 3, 180, 180, 180,
180, 180, 52, 180, 58, 180, 60, 180, 46, 180, 180, 180, 180, 41, 180, 67, 180, 69, 180, 35, 180, 180, 180, 180, 30, 180, 76, 180, 78, 180, 24, 180, 180, 180, 180, 19, 180, 85, 180, 87, 180, 13, 180, 180, 180, 180, 8, 180, 94, 180, 96, 180, 2, 180, 180,
180, 53, 180, 57, 180, 131, 180, 61, 180, 45, 180, 180, 42, 180, 66, 180, 124, 180, 70, 180, 34, 180, 180, 31, 180, 75, 180, 117, 180, 79, 180, 23, 180, 180, 20, 180, 84, 180, 110, 180, 88, 180, 12, 180, 180, 9, 180, 93, 180, 103, 180, 97, 180, 1, 180,
54, 56, 180, 180, 132, 180, 130, 180, 180, 62, 44, 43, 65, 180, 180, 125, 180, 123, 180, 180, 71, 33, 32, 74, 180, 180, 118, 180, 116, 180, 180, 80, 22, 21, 83, 180, 180, 111, 180, 109, 180, 180, 89, 11, 10, 92, 180, 180, 104, 180, 102, 180, 180, 98, 0,
55, 180, 133, 180, 180, 137, 180, 180, 129, 180, 63, 64, 180, 126, 180, 180, 142, 180, 180, 122, 180, 72, 73, 180, 119, 180, 180, 147, 180, 180, 115, 180, 81, 82, 180, 112, 180, 180, 152, 180, 180, 108, 180, 90, 91, 180, 105, 180, 180, 157, 180, 180, 101, 180, 99,
134, 180, 180, 136, 180, 180, 180, 138, 180, 180, 128, 127, 180, 180, 141, 180, 180, 180, 143, 180, 180, 121, 120, 180, 180, 146, 180, 180, 180, 148, 180, 180, 114, 113, 180, 180, 151, 180, 180, 180, 153, 180, 180, 107, 106, 180, 180, 156, 180, 180, 180, 158, 180, 180, 100,
135, 180, 180, 180, 180, 173, 180, 180, 180, 180, 139, 140, 180, 180, 180, 180, 170, 180, 180, 180, 180, 144, 145, 180, 180, 180, 180, 167, 180, 180, 180, 180, 149, 150, 180, 180, 180, 180, 164, 180, 180, 180, 180, 154, 155, 180, 180, 180, 180, 161, 180, 180, 180, 180, 159,
180, 174, 180, 180, 180, 180, 180, 180, 180, 172, 180, 180, 171, 180, 180, 180, 180, 180, 180, 180, 169, 180, 180, 168, 180, 180, 180, 180, 180, 180, 180, 166, 180, 180, 165, 180, 180, 180, 180, 180, 180, 180, 163, 180, 180, 162, 180, 180, 180, 180, 180, 180, 180, 160, 180,
180, 180, 180, 180, 180, 175, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 176, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 177, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 178, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 179, 180, 180, 180, 180, 180};
const byte StarShapedCircular[] PROGMEM = {
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
99,
98,
180,
97,
96,
95,
94,
93,
180,
92,
91,
90,
89,
180,
88,
87,
86,
85,
84,
180,
83,
82,
81,
80,
180,
79,
78,
77,
76,
75,
180,
74,
73,
72,
71,
180,
70,
69,
68,
67,
66,
180,
65,
64,
63,
62,
180,
61,
60,
59,
58,
57,
180,
56,
55,
100,
180,
101,
102,
180,
103,
180,
104,
105,
180,
106,
107,
180,
108,
109,
180,
110,
180,
111,
112,
180,
113,
114,
180,
115,
116,
180,
117,
180,
118,
119,
180,
120,
121,
180,
122,
123,
180,
124,
180,
125,
126,
180,
127,
128,
180,
129,
130,
180,
131,
180,
132,
133,
180,
134,
159,
180,
158,
180,
180,
157,
180,
180,
156,
180,
155,
154,
180,
153,
180,
180,
152,
180,
180,
151,
180,
150,
149,
180,
148,
180,
180,
147,
180,
180,
146,
180,
145,
144,
180,
143,
180,
180,
142,
180,
180,
141,
180,
140,
139,
180,
138,
180,
180,
137,
180,
180,
136,
180,
135,
180,
160,
180,
180,
180,
161,
180,
180,
180,
162,
180,
180,
163,
180,
180,
180,
164,
180,
180,
180,
165,
180,
180,
166,
180,
180,
180,
167,
180,
180,
180,
168,
180,
180,
169,
180,
180,
180,
170,
180,
180,
180,
171,
180,
180,
172,
180,
180,
180,
173,
180,
180,
180,
174,
180,
180,
180,
180,
180,
180,
179,
180,
180,
180,
180,
180,
180,
180,
180,
180,
180,
178,
180,
180,
180,
180,
180,
180,
180,
180,
180,
180,
177,
180,
180,
180,
180,
180,
180,
180,
180,
180,
180,
176,
180,
180,
180,
180,
180,
180,
180,
180,
180,
180,
175,
180,
180,
180,
180,
180,
};
const byte SegmentPlanarIndex[] PROGMEM = {
5, 6, 7, 8, 9, 10, 16, 17, 18, 19, 20, 21, 27, 28, 29, 30, 31, 32, 38, 39, 40, 41, 42, 43, 49, 50, 51, 52, 53, 54,
4, 95, 94, 93, 92, 91, 15, 86, 85, 84, 83, 82, 26, 77, 76, 75, 74, 73, 37, 68, 67, 66, 65, 64, 48, 59, 58, 57, 56, 55,
3, 96, 103, 104, 105, 106, 14, 87, 110, 111, 112, 113, 25, 78, 117, 118, 119, 120, 36, 69, 124, 125, 126, 127, 47, 60, 131, 132, 133, 134,
2, 97, 102, 157, 156, 155, 13, 88, 109, 152, 151, 150, 24, 79, 116, 147, 146, 145, 35, 70, 123, 142, 141, 140, 46, 61, 130, 137, 136, 135,
1, 98, 101, 158, 161, 162, 12, 89, 108, 153, 164, 165, 23, 80, 115, 148, 167, 168, 34, 71, 122, 143, 170, 171, 45, 62, 129, 138, 173, 174,
0, 99, 100, 159, 160, 179, 11, 90, 107, 154, 163, 178, 22, 81, 114, 149, 166, 177, 33, 72, 121, 144, 169, 176, 44, 63, 128, 139, 172, 175,
};
byte XY( byte x, byte y){
return pgm_read_byte(&SegmentPlanarIndex[y * 30 + x]);
}
void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
FastLED.clear();
}
byte hue = 0;
void loop() {
float t=millis()/100.0;
CRGB col;
for ( byte y = 0; y < 6; y++ ) {
for ( byte x = 0; x < 6; x++ ) {
col.red = inoise8((x)*80+t*20);
col.green = inoise8((y)*80+t*20);
col.blue = inoise8((x+y)*80+t*20);
leds[XY(x,y)] = col;
}
}
for (int n = 1; n < 5; n++) {
for (int j = 0; j < 6; j++) {
for (int i = 0; i < 6; i++) {
leds[XY(i + n * 6, j)] = leds[XY(i, j)];
}
}
}
FastLED.show();
hue++;
} //loop