-
Notifications
You must be signed in to change notification settings - Fork 0
/
Lights.ino
185 lines (172 loc) · 4.65 KB
/
Lights.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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#include <Adafruit_NeoPixel.h>
// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
// NEO_RGB Pixels are wired for RGB bitstream
// NEO_GRB Pixels are wired for GRB bitstream
// NEO_KHZ400 400 KHz bitstream (e.g. FLORA pixels)
// NEO_KHZ800 800 KHz bitstream (e.g. High Density LED strip)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(2*240, 5, NEO_GRB + NEO_KHZ800);
const int waveNums = 10;
uint16_t wavelets[] = {0, 80, 160, 240, 320, 400,480,560,620,700};
int glowdir =1;
int intensity=0;
void glow(){
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, intensity, 0,0);
}
// strip.show();
delay(50);
}
void setup() {
strip.begin();
strip.show(); // Initialize all pixels to 'off'
}
int phase =0;
void crazy(){
for(uint16_t i=0; i<strip.numPixels(); i++) {
int purplepower = random(0,4);
strip.setPixelColor(i, (purplepower*purplepower*purplepower)*intensity/50,0,random(0,50));
}
delay(55-intensity);
}
void updatePhase(){
intensity+=glowdir;
if (intensity>= 50){
glowdir=-1;
}
if (intensity<=0){
glowdir=1;
}
}
int splotch=0;
const int splotchSize=50;
void boom(){
if (intensity==0){
splotch=random(splotchSize,strip.numPixels()-splotchSize);
}
for(uint16_t i=0; i<splotchSize; i++) {
int pixel = (splotch-splotchSize/2)+i;
strip.setPixelColor(pixel, intensity, 0,0);
}
}
void loop() {
rainbowCycle(1);
// updatePhase();
// glow();
// waves();
// crazy();
//boom();
// SpamWhite();
strip.show();
//colorWipe(strip.Color(200,50,0),20);
// colorWipe(strip.Color(255,0,0),20);
}
const int waveSize=20;
const int waveHalf = 10;
int val;
void SpamWhite(){
strip.setPixelColor(random(0,strip.numPixels()), 255,255,255);
// strip.setPixelColor(random(0,strip.numPixels()), 255,255,255);
// strip.setPixelColor(random(0,strip.numPixels()), 255,255,255);
// strip.setPixelColor(random(0,strip.numPixels()), 255,255,255);
}
void waves(){
static int dir = 1;
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, 0, 5,10);
}
for (int j=0;j<waveNums;j++){
wavelets[j]++;
if (wavelets[j]>strip.numPixels()){
wavelets[j] = 0;
}
wave (wavelets[j]);
}
strip.setPixelColor(random(0,strip.numPixels()), 255,255,255);
strip.setPixelColor(random(0,strip.numPixels()), 255,255,255);
strip.setPixelColor(random(0,strip.numPixels()), 255,255,255);
strip.setPixelColor(random(0,strip.numPixels()), 255,255,255);
//val = analogRead(0);
strip.setPixelColor(2, val,val,val);
// pulse();
strip.show();
delay(50);
}
int isPulsing = -1;
int pulseTime = 0;
void pulse(){
if (isPulsing==-1){
//if (random(0,50==0)){
isPulsing =random(0,strip.numPixels());
// }
}else{
int i=isPulsing;
for( ; i<isPulsing+30; i++) {
if (i>=strip.numPixels()) break;
strip.setPixelColor(i, 0, 125,0);
}
}
pulseTime++;
if (pulseTime>50){
pulseTime=0;
isPulsing=-1;
}
}
void wave(uint16_t pos){
const int waveStrength=2;
int i=pos;
for( ; i<pos+waveHalf; i++) {
int offset = (i-pos)*waveStrength;
if (i>=strip.numPixels()) return;
strip.setPixelColor(i, 0, 10+offset,5+offset);
}
int peak = (i-pos)*waveStrength;
for(; i<pos+waveSize; i++) {
int offset = (pos+waveHalf-i)*waveStrength;
if (i>=strip.numPixels()) return;
strip.setPixelColor(i, 0,10+peak-offset,5+peak-offset);
}
}
// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
for(uint16_t i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, c);
strip.show();
delay(wait);
}
}
void rainbow(uint8_t wait) {
uint16_t i, j;
for(j=0; j<256; j++) {
for(i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel((i+j) & 255));
}
strip.show();
delay(wait);
}
}
// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
uint16_t i, j;
for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
for(i=0; i< strip.numPixels(); i++) {
strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
}
strip.show();
delay(wait);
}
}
// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
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);
}
}