-
Notifications
You must be signed in to change notification settings - Fork 0
/
functions.ino
138 lines (122 loc) · 2.8 KB
/
functions.ino
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
void show() {
#ifdef USEDMX
for(int i=0;i<NUMLEDS;i++) {
DmxSimple.write(i*3+1, (dmxLights[i] & 0xFF0000)>>16);
DmxSimple.write(i*3+2, (dmxLights[i] & 0x00FF00)>>8);
DmxSimple.write(i*3+3, (dmxLights[i] & 0x0000FF));
}
#else
strip.show();
#endif
}
void setPixel(int num, uint32_t color) {
#ifdef USEDMX
dmxLights[num]=color;
#else
strip.setPixelColor(num,color);
#endif
}
void setPixel(int y, int x, uint32_t color) {
#ifdef USEDMX
if(y%2)
dmxLights[num]=color;
else
dmxLights[NUMLEDS-x-1]=color;
#else
if(y==0)
strip.setPixelColor(x,color);
else
strip.setPixelColor(pieceStart[y]+x,color);
#endif
}
uint32_t getPixel(int n) {
#ifdef USEDMX
return dmxLights[n];
#else
return strip.getPixelColor(n);
#endif
}
uint32_t getPixel(int s, int num) {
#ifdef USEDMX
if(s%2)
return dmxLights[num];
else
return dmxLights[NUMLEDS-num-1];
#else
if(s%2)
strip.getPixelColor(num);
else
strip.getPixelColor(NUMLEDS-num-1);
#endif
}
uint32_t colorFade(uint32_t color, int fade) {
uint8_t r,g,b;
r=(color >> 16) ;
g=(color >> 8) ;
b=(color);
return strip.Color(linear[r*fade/100],linear[g*fade/100],linear[b*fade/100]);
}
uint32_t colorBlend(uint32_t color1, uint32_t color2, float s) {
int r,r1,r2,g,g1,g2,b,b1,b2;
r1=(color1 & 0xFF0000)>>16;
g1=(color1 & 0x00FF00)>>8;
b1=(color1 & 0x0000FF);
r2=(color2 & 0xFF0000)>>16;
g2=(color2 & 0x00FF00)>>8;
b2=(color2 & 0x0000FF);
r=((r2-r1)*s)+r1;
g=((g2-g1)*s)+g1;
b=((b2-b1)*s)+b1;
return strip.Color(r,g,b);
}
//Function to generate a color value from the slider
uint32_t Wheel(byte WheelPos) {
if(WheelPos < 85) {
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
} else if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
} else {
WheelPos -= 170;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
}
void moveAll() {
for(int i=0;i<NUMSTRIPS;i++) {
for(int x=pieceLen[i]-1; x > 0 ; x--) {
setPixel(i,x,getPixel(i,x-1));
}
}
}
void fadeAll(float fadeSpeed) {
uint32_t color;
uint8_t r,g,b;
for(int x=0;x<NUMLEDS;x++) {
color=getPixel(x);
r=(color >> 16) ;
g=(color >> 8) ;
b=(color);
setPixel(x,strip.Color(r*fadeSpeed,g*fadeSpeed,b*fadeSpeed));
}
}
void setAll(uint32_t color) {
for(int i=0;i<NUMLEDS;i++)
setPixel(i,color);
show(); // Should this really be here?
}
uint32_t randomColor() {
switch(random(0,5)) {
case 0:
return strip.Color(255,0,0);
case 1:
return strip.Color(255,255,0);
case 2:
return strip.Color(0,255,0);
case 3:
return strip.Color(0,255,255);
case 4:
return strip.Color(0,0,255);
case 5:
return strip.Color(255,0,255);
}
}