Skip to content

Commit 2dc696b

Browse files
committed
Setting up Marquee Music functionality
1 parent b01c877 commit 2dc696b

File tree

1 file changed

+81
-121
lines changed

1 file changed

+81
-121
lines changed

color_organ_ledstrip/color_organ_ledstrip.ino

+81-121
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,14 @@ int analogPin=0;
77
int strobePin=2;
88
int resetPin=3;
99
int spectrumValue[7];
10-
int filter=100;
10+
int filter=90;
1111
int iteration = 0;
1212
int marqueeOffset = 0;
13+
bool forward = true;
14+
int color = 7;
1315

1416

1517
void setup(){
16-
17-
//Serial.begin(9600);
18-
1918
strip.begin();
2019
strip.show();
2120

@@ -26,140 +25,104 @@ void setup(){
2625
digitalWrite(strobePin, HIGH);
2726
}
2827

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++;
5831
}
5932

60-
strip.show();
61-
}
62-
63-
void three(int totalLEDs) {
33+
int localOffset = (marqueeOffset % 3);
34+
6435
for (int i = 0; i < totalLEDs; i++){
36+
//if (i > 2) {
6537
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);
6851
} 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);
7165
} 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));
7479
}
7580
}
7681

7782
strip.show();
83+
84+
iteration++;
7885
}
7986

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);
92102
}
93103

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);
121108
}
122109

123110
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++;
137118
}
138119

139-
/* Hello world test */
140120

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--;
158125
}
159-
160-
strip.show();
161-
162-
iteration++;
163126
}
164127

165128
void loop(){
@@ -171,13 +134,10 @@ void loop(){
171134
spectrumValue[i]=analogRead(analogPin);
172135
spectrumValue[i]=constrain(spectrumValue[i], filter, 500);
173136
spectrumValue[i]=map(spectrumValue[i], filter,500,0,255);
174-
//Serial.print(spectrumValue[i]);
175-
//Serial.print(" ");
176137
digitalWrite(strobePin, HIGH);
177138
}
178139

179-
//setColors(7, 60);
180-
threeMarquee(60);
140+
marqueeMusic(60, 5);
181141
}
182142

183143

0 commit comments

Comments
 (0)