@@ -7,15 +7,14 @@ int analogPin=0;
7
7
int strobePin=2 ;
8
8
int resetPin=3 ;
9
9
int spectrumValue[7 ];
10
- int filter=100 ;
10
+ int filter=90 ;
11
11
int iteration = 0 ;
12
12
int marqueeOffset = 0 ;
13
+ bool forward = true ;
14
+ int color = 7 ;
13
15
14
16
15
17
void setup (){
16
-
17
- // Serial.begin(9600);
18
-
19
18
strip.begin ();
20
19
strip.show ();
21
20
@@ -26,140 +25,104 @@ void setup(){
26
25
digitalWrite (strobePin, HIGH);
27
26
}
28
27
29
- void setColors (int bulbsInSet, int totalLEDs) {
30
- switch (bulbsInSet){
31
- case 7 :
32
- seven (totalLEDs);
33
- break ;
34
- case 4 :
35
- four (totalLEDs);
36
- break ;
37
- case 3 :
38
- three (totalLEDs);
39
- break ;
40
- case 2 :
41
- two (totalLEDs);
42
- break ;
43
- default :
44
- three (totalLEDs);
45
- break ;
46
- }
47
- }
48
-
49
- void two (int totalLEDs) {
50
- for (int i = 0 ; i < totalLEDs; i++){
51
- if (i == 0 || (i % 2 ) == 0 ) {
52
- /* position 1 on strip - Red */
53
- strip.setPixelColor (i, spectrumValue[0 ], spectrumValue[1 ], spectrumValue[2 ]);
54
- } else {
55
- /* position 2 on strip - Blue */
56
- strip.setPixelColor (i, spectrumValue[6 ], spectrumValue[5 ], spectrumValue[4 ]);
57
- }
28
+ void marqueeMusic (int totalLEDs, int speedFactor) {
29
+ if ((iteration % speedFactor) == 0 ) {
30
+ marqueeOffset++;
58
31
}
59
32
60
- strip.show ();
61
- }
62
-
63
- void three (int totalLEDs) {
33
+ int localOffset = (marqueeOffset % 3 );
34
+
64
35
for (int i = 0 ; i < totalLEDs; i++){
36
+ // if (i > 2) {
65
37
if (i == 0 || (i % 3 ) == 0 ) {
66
- /* position 1 on strip - Red */
67
- strip.setPixelColor (i, spectrumValue[4 ], spectrumValue[2 ], spectrumValue[0 ]);
38
+ /* position 1 on strip */
39
+ if (i == 0 && localOffset > 0 ) {
40
+ if (localOffset == 1 ) {
41
+ // Blue
42
+ strip.setPixelColor (i, 0 , 0 , ((spectrumValue[4 ]+spectrumValue[5 ]+spectrumValue[6 ])/3 ));
43
+ } else {
44
+ // Green
45
+ strip.setPixelColor (i, 0 , ((spectrumValue[1 ]+spectrumValue[3 ])/2 ), 0 );
46
+ }
47
+ }
48
+
49
+ // Red
50
+ strip.setPixelColor (i + localOffset, ((spectrumValue[0 ]+spectrumValue[2 ])/2 ), 0 , 0 );
68
51
} else if (i == 1 || (i % 3 ) == 1 ) {
69
- /* position 2 on strip - Green */
70
- strip.setPixelColor (i, spectrumValue[1 ], spectrumValue[5 ], spectrumValue[3 ]);
52
+ /* position 2 on strip */
53
+ if (i == 1 && localOffset > 0 ) {
54
+ if (localOffset == 1 ) {
55
+ // Red
56
+ strip.setPixelColor (i, ((spectrumValue[0 ]+spectrumValue[2 ])/2 ), 0 , 0 );
57
+ } else {
58
+ // Blue
59
+ strip.setPixelColor (i, 0 , 0 , ((spectrumValue[4 ]+spectrumValue[5 ]+spectrumValue[6 ])/3 ));
60
+ }
61
+ }
62
+
63
+ // Green
64
+ strip.setPixelColor (i + localOffset, 0 , ((spectrumValue[1 ]+spectrumValue[3 ])/2 ), 0 );
71
65
} else {
72
- /* position 3 on strip - Blue */
73
- strip.setPixelColor (i, spectrumValue[2 ], spectrumValue[4 ], spectrumValue[6 ]);
66
+ /* position 3 on strip */
67
+ if (i == 2 && localOffset > 0 ) {
68
+ if (localOffset == 1 ) {
69
+ // Green
70
+ strip.setPixelColor (i, 0 , ((spectrumValue[1 ]+spectrumValue[3 ])/2 ), 0 );
71
+ } else {
72
+ // Red
73
+ strip.setPixelColor (i, ((spectrumValue[0 ]+spectrumValue[2 ])/2 ), 0 , 0 );
74
+ }
75
+ }
76
+
77
+ // Blue
78
+ strip.setPixelColor (i + localOffset, 0 , 0 , ((spectrumValue[4 ]+spectrumValue[5 ]+spectrumValue[6 ])/3 ));
74
79
}
75
80
}
76
81
77
82
strip.show ();
83
+
84
+ iteration++;
78
85
}
79
86
80
- void four (int totalLEDs) {
81
- for (int i = 0 ; i < totalLEDs; i++){
82
- if (i == 0 || (i % 3 ) == 0 ) {
83
- /* position 1 on strip - Red */
84
- strip.setPixelColor (i, spectrumValue[1 ], 0 , 0 );
85
- } else if (i == 1 || (i % 3 ) == 1 ) {
86
- /* position 2 on strip - Green */
87
- strip.setPixelColor (i, 0 , ((spectrumValue[2 ] + spectrumValue[3 ]) / 2 ), 0 );
88
- } else {
89
- /* position 3 on strip - Blue */
90
- strip.setPixelColor (i, 0 , 0 , ((spectrumValue[4 ] + spectrumValue[5 ] + spectrumValue[6 ]) / 3 ));
91
- }
87
+ void bouncingRainbow () {
88
+ if ((color % 7 ) == 0 ) {
89
+ strip.setPixelColor (iteration, 255 , 0 , 0 );
90
+ } else if ((color % 7 ) == 1 ) {
91
+ strip.setPixelColor (iteration, 255 , 127 , 0 );
92
+ } else if ((color % 7 ) == 2 ) {
93
+ strip.setPixelColor (iteration, 255 , 255 , 0 );
94
+ } else if ((color % 7 ) == 3 ) {
95
+ strip.setPixelColor (iteration, 0 , 255 , 0 );
96
+ } else if ((color % 7 ) == 4 ) {
97
+ strip.setPixelColor (iteration, 0 , 0 , 255 );
98
+ } else if ((color % 7 ) == 5 ) {
99
+ strip.setPixelColor (iteration, 75 , 0 , 130 );
100
+ } else {
101
+ strip.setPixelColor (iteration, 139 , 0 , 255 );
92
102
}
93
103
94
- strip.show ();
95
- }
96
-
97
- void seven (int totalLEDs) {
98
- for (int i = 0 ; i < totalLEDs; i++){
99
- if (i == 0 || (i % 7 ) == 0 ) {
100
- /* position 1 on strip */
101
- strip.setPixelColor (i, spectrumValue[0 ], 0 , 0 );
102
- } else if (i == 1 || (i % 7 ) == 1 ) {
103
- /* position 2 on strip */
104
- strip.setPixelColor (i, 0 , spectrumValue[1 ], 0 );
105
- } else if (i == 2 || (i % 7 ) == 2 ) {
106
- /* position 3 on strip */
107
- strip.setPixelColor (i, 0 , 0 , spectrumValue[2 ]);
108
- } else if (i == 3 || (i % 7 ) == 3 ) {
109
- /* position 4 on strip */
110
- strip.setPixelColor (i, spectrumValue[3 ], 0 , 0 );
111
- } else if (i == 4 || (i % 7 ) == 4 ) {
112
- /* position 5 on strip */
113
- strip.setPixelColor (i, 0 , spectrumValue[4 ], 0 );
114
- } else if (i == 5 || (i % 7 ) == 5 ) {
115
- /* position 6 on strip */
116
- strip.setPixelColor (i, 0 , 0 , spectrumValue[5 ]);
117
- } else {
118
- /* position 7 on strip */
119
- strip.setPixelColor (i, spectrumValue[6 ], 0 , 0 );
120
- }
104
+ if (forward) {
105
+ strip.setPixelColor (iteration - 1 , 0 , 0 , 0 );
106
+ } else {
107
+ strip.setPixelColor (iteration + 1 , 0 , 0 , 0 );
121
108
}
122
109
123
110
strip.show ();
124
- }
125
-
126
- void threeMarquee (int totalLEDs) {
127
- if (iteration == 10 ) {
128
- /* ensure that we only change the offset once every 100 iterations, so that you can see the marquee effect */
129
- iteration = 0 ;
130
-
131
- if (marqueeOffset < totalLEDs) {
132
- /* we can only offset the count up to the total number of LEDs we're processing */
133
- marqueeOffset++;
134
- } else {
135
- marqueeOffset = 0 ;
136
- }
111
+
112
+ if (iteration == 59 ) {
113
+ forward = false ;
114
+ color++;
115
+ } else if (iteration == 0 && color != 7 ) {
116
+ forward = true ;
117
+ color++;
137
118
}
138
119
139
- /* Hello world test */
140
120
141
- for (int i = 0 ; i < totalLEDs; i++){
142
- int ledPosition = i + marqueeOffset;
143
-
144
- if (ledPosition > totalLEDs) {
145
- ledPosition = ledPosition - totalLEDs;
146
- }
147
-
148
- if (ledPosition == 0 || (ledPosition % 3 ) == 0 ) {
149
- /* position 1 on strip - Red */
150
- strip.setPixelColor (ledPosition, spectrumValue[0 ], 0 , 0 );
151
- } else if (ledPosition == 1 || (ledPosition % 3 ) == 1 ) {
152
- /* position 2 on strip - Green */
153
- strip.setPixelColor (ledPosition, 0 , ((spectrumValue[1 ]+spectrumValue[2 ])/2 ), 0 );
154
- } else {
155
- /* position 3 on strip - Blue */
156
- strip.setPixelColor (ledPosition, 0 , 0 , ((spectrumValue[3 ]+spectrumValue[4 ]+spectrumValue[5 ]+spectrumValue[6 ])/4 ));
157
- }
121
+ if (forward) {
122
+ iteration++;
123
+ } else {
124
+ iteration--;
158
125
}
159
-
160
- strip.show ();
161
-
162
- iteration++;
163
126
}
164
127
165
128
void loop (){
@@ -171,13 +134,10 @@ void loop(){
171
134
spectrumValue[i]=analogRead (analogPin);
172
135
spectrumValue[i]=constrain (spectrumValue[i], filter, 500 );
173
136
spectrumValue[i]=map (spectrumValue[i], filter,500 ,0 ,255 );
174
- // Serial.print(spectrumValue[i]);
175
- // Serial.print(" ");
176
137
digitalWrite (strobePin, HIGH);
177
138
}
178
139
179
- // setColors(7, 60);
180
- threeMarquee (60 );
140
+ marqueeMusic (60 , 5 );
181
141
}
182
142
183
143
0 commit comments