I'm having some code related issues regarding a project I am attempting.
As far as I can tell with the error "lednumber" cannot appear in a constant-expression", it is the result of using the switch statement within a for loop.
What alternatives to an embedded switch statement in a for loop do I have, or is there a change I can make to successfully run this line.
void loop()
{
digitalWrite(msg7RESET, HIGH); // reset the MSGEQ7's counter
delay(5);
digitalWrite(msg7RESET, LOW);
for (int x = 0; x < 7; x++) {
if (x = 2) {
int spectrumRead = analogRead(msg7DCout);
int LEDvolume = map(spectrumRead, 100, 1000, 0, 32);
for (int lednumber = 0; lednumber < LEDvolume; lednumber++) {
switch (lednumber) {
case (5 > lednumber) {
blue = 255;
leds[lednumber].b = blue;
}
case (10 > lednumber >= 5) {
blue = 255);
green = 51 * (lednumber - 10);
leds[lednumber].b = blue;
leds[lednumber].g = green;
}
case (15 > lednumber >= 20) {
blue = 255 - 51 * (lednumber - 15);
green = 255;
leds[lednumber].b = blue;
leds[lednumber].g = green;
}
case (20 > lednumber >= 15) {
red = 51 * (lednumber - 15);
green = 255;
leds[lednumber].r = red;
leds[lednumber].g = green;
}
case (25 > lednumber >= 30) {
red = 255;
green = 255 - 51 * (lednumber - 25);
leds[lednumber].r = red;
leds[lednumber].g = green;
}
case (30 > lednumber) {
leds[lednumber].r = 255;
}
}
}
else
{
digitalWrite(msg7Strobe, LOW); // output each DC value for each freq band
delayMicroseconds(35); // to allow the output to settle
int spectrumRead = analogRead(msg7DCout);
int PWMvalue = map(spectrumRead, 100, 800, 0, 255); // scale analogRead's value to Write's 255 max
if (PWMvalue < 50)
PWMvalue = 0; // bit of a noise filter, so the LEDs turn off at low levels
analogWrite(LEDpins[x], PWMvalue);
digitalWrite(msg7Strobe, HIGH);
}
}
}
}