About rgb dimmer controlling

i just made this project for rgb color mixing, now i wanna add two more buttons or potentiometer for dimmer that could control each mode bright or dim. i tried many ways but that just spoil colors each mode. i,m looking for master dimmer that could control each mode correctly, here is the code, help will be appreciated, thanks in advance

int button = 14;
int button2 = 12;
int RED = 2;
int GREEN = 4;
int BLUE = 5;

// colors
int mode;

void setup() {
  Serial.begin(115200);
  //setup LED lights
  pinMode(RED, OUTPUT);
  pinMode(GREEN, OUTPUT);
  pinMode(BLUE, OUTPUT);
  
//setup buttons
pinMode (button, INPUT_PULLUP);
pinMode (button2, INPUT_PULLUP);

}
void loop() {
  
if (digitalRead(button) == LOW) {
  delay(300);
  mode++;
  if(mode == 32)
    {
      mode = 0;
       }
      } 
 if(digitalRead(button2) == LOW) {
  delay(300);
      mode--;
      
    
    if(mode == 0)
    {
      mode = 1;
       }
  }

//Off
 if (mode == 0) {
  analogWrite(BLUE, 255);
  analogWrite(GREEN, 255);
  analogWrite(RED, 255);
  }
//White
 if (mode == 1) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN, 0);
  analogWrite(RED, 0);
}

 if (mode == 2) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN, 50);
  analogWrite(RED, 255);
}

 if (mode == 3) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN, 100);
  analogWrite(RED, 255);
  }

 if (mode == 4) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN, 125);
  analogWrite(RED, 255);
}

 if (mode == 5) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN, 200);
  analogWrite(RED, 255);
}

 if (mode == 6) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN, 255);
  analogWrite(RED, 255);
}

 if (mode == 7) {
  analogWrite(BLUE, 50);
  analogWrite(GREEN, 0);
  analogWrite(RED, 255);
 }

 if (mode == 8) {
  analogWrite(BLUE, 100);
  analogWrite(GREEN, 0);
  analogWrite(RED, 255);
  }
  
 if (mode == 9) {
  analogWrite(BLUE, 150);
  analogWrite(GREEN, 0);
  analogWrite(RED, 255);
  }

 if (mode == 10) {
  analogWrite(BLUE, 200);
  analogWrite(GREEN, 0);
  analogWrite(RED, 255);
  }
  
 if (mode == 11) {
  analogWrite(BLUE, 255);
  analogWrite(GREEN, 0);
  analogWrite(RED, 255);
  }

 if (mode == 12) {
  analogWrite(BLUE, 255);
  analogWrite(GREEN, 0);
  analogWrite(RED, 200);
  }

 if (mode == 13) {
  analogWrite(BLUE, 255);
  analogWrite(GREEN, 0);
  analogWrite(RED, 150);
  }
 
 if (mode == 14) {
  analogWrite(BLUE, 255);
  analogWrite(GREEN, 0);
  analogWrite(RED, 100);
  }
 
 if (mode == 15) {
  analogWrite(BLUE, 255);
  analogWrite(GREEN, 0);
  analogWrite(RED, 50);
  }
  
 if (mode == 16) {
  analogWrite(BLUE, 255);
  analogWrite(GREEN,0);
  analogWrite(RED, 0);
  }
  
 if (mode == 17) {
  analogWrite(BLUE, 255);
  analogWrite(GREEN,255);
  analogWrite(RED, 0);
  }
 
 if (mode == 18) {
  analogWrite(BLUE, 200);
  analogWrite(GREEN,255);
  analogWrite(RED, 0);
  }
  if (mode == 19) {
  analogWrite(BLUE, 150);
  analogWrite(GREEN,255);
  analogWrite(RED, 0);
  }
  if (mode == 20) {
  analogWrite(BLUE, 100);
  analogWrite(GREEN,255);
  analogWrite(RED, 0);
  }
  if (mode == 21) {
  analogWrite(BLUE, 50);
  analogWrite(GREEN,255);
  analogWrite(RED, 0);
  }
  if (mode == 22) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN,255);
  analogWrite(RED, 0);
  }
  if (mode == 23) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN,255);
  analogWrite(RED, 50);
  }
  if (mode == 24) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN,255);
  analogWrite(RED, 100);
  }
  if (mode == 25) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN,255);
  analogWrite(RED, 150);
  }
  if (mode == 26) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN,255);
  analogWrite(RED, 200);
  }
  if (mode == 27) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN,50);
  analogWrite(RED, 200);
  }
  if (mode == 28) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN,100);
  analogWrite(RED, 150);
  }
  if (mode == 29) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN,150);
  analogWrite(RED, 100);
  }
  if (mode == 30) {
  analogWrite(BLUE, 0);
  analogWrite(GREEN,200);
  analogWrite(RED, 50);
  }
  if (mode == 31) {
  analogWrite(BLUE, 200);
  analogWrite(GREEN,150);
  analogWrite(RED, 0);
  }
  if (mode == 32) {
  analogWrite(BLUE, 150);
  analogWrite(GREEN,200);
  analogWrite(RED, 0);
  }
}

What Arduino are you using? On an UNO/Nano, you can't use analogWrite() on pins 2 (RED) or 4 (GREEN), just 3, 5, 6, 9, 10, and 11.

1 Like

using esp8266.

Hi,
there is a logic error in this sketch you posted.

The 'if' of button2 and all the 'if's that follow are inside the 'if' of the button.

To fix it, add a '}' to line 31 and delete '}' from line 226.

1 Like

thanks for correcting me mate.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.