int redGroup[] = {2, 5, 8, 14, 17};
int greenGroup[] = {3, 6, 9, 15, 18};
int blueGroup[] = {4, 7, 10, 16, 19};
int ledCount = 5;
char val[] = "o";
void setup() {
for (int i = 0; i < ledCount; i++)
{
pinMode(redGroup[i], OUTPUT);
pinMode(greenGroup[i], OUTPUT);
pinMode(blueGroup[i], OUTPUT);
digitalWrite(redGroup[i], 0);
digitalWrite(greenGroup[i], 0);
digitalWrite(blueGroup[i], 0);
}
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0)
{
Serial.flush();
for (int i = 0; i < Serial.available(); i++)
{
val[i] = Serial.read();
}
Serial.write(val);
}
if (val[0] == 'o') {
for (int i = 0; i < ledCount; i++)
{
digitalWrite(redGroup[i], 0);
digitalWrite(greenGroup[i], 0);
digitalWrite(blueGroup[i], 0);
}
}
else if (val[0] == 'r')
{
if(val[1] != 'a')
{
digitalWrite(redGroup[val[1]], 1);
}
else
{
for (int i = 0; i < ledCount; i++)
{
digitalWrite(redGroup[i], 1);
}
}
}
else if (val[0] == 'g')
{
for (int i = 0; i < ledCount; i++)
{
digitalWrite(greenGroup[i], 1);
}
}
else if (val[0] == 'b')
{
for (int i = 0; i < ledCount; i++)
{
digitalWrite(blueGroup[i], 1);
}
}
else if (val[0] == 'w') {
for (int i = 0; i < ledCount; i++)
{
digitalWrite(redGroup[i], 1);
digitalWrite(greenGroup[i], 1);
digitalWrite(blueGroup[i], 1);
}
}
}
You can see the setup from the picture, sorry about all the wires. But you can see each group of 5 RGB LEDs. I intend to be able to control each groups colour individually or all together. The problem is if I input, for example, "r2" group 2 should light up the Red LEDs, but only the first group lights up. Even if I input "ra" all of the groups of LEDs should light up red but they aren't
Is there something wrong with my code that I'm missing?
