variable not increasing

Hi, i am writing a simple program and it is all working fine apart from my variable 'switch_colour' is not increasing when colour_count == 511 (this is in the ISR). I have seen that colour count == 511 from the serial monitor but switch_count does not increase. The idea is that when this increases by 1 each time it hits one of the above if statements. I have also tried taking the if statement out of the ISR and put it straight in the loop but still no joy.

#include <DmxMaster.h>
#include <avr/pgmspace.h>
#include <TimerOne.h>

int led_delay = 0;
int colour_count = 1;                //Count the colours out
#define colour_count_max 70000              //Set this to the max number of colours defined


//Some Time values
unsigned long TIME_LED = 0;
unsigned long TIME_COLOUR = 0;

int val1;
int val2;
int val3;
int val4;
int value1;
int value2;
int count;
int switch_colour;

#define FADE_TIME 2000

#define DIR_UP 1
#define DIR_DOWN -1






int myints[514] = {
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,
51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,
99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,
135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,
171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,
207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,
243,244,245,246,247,248,249,250,251,252,253,254,255,255,254,253,252,251,250,249,248,247,246,245,244,243,242,241,240,239,238,237,236,235,234,233,
232,231,230,229,228,227,226,225,224,223,222,221,220,219,218,217,216,215,214,213,212,211,210,209,208,207,206,205,204,203,202,201,200,199,198,197,
196,195,194,193,192,191,190,189,188,187,186,185,184,183,182,181,180,179,178,177,176,175,174,173,172,171,170,169,168,167,166,165,164,163,162,161,
160,159,158,157,156,155,154,153,152,151,150,149,148,147,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,131,130,129,128,127,126,125,
124,123,122,121,120,119,118,117,116,115,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,
84,83,82,81,80,79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,
36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
};


void setup()
{
 DmxMaster.usePin(3);
  //Assign initial values
  Serial.begin(9600);
  //Get the led_delay speed

switch_colour = 1;


colour_count = 0;
  

  Serial.begin(9600);
    DmxMaster.usePin(3);


}

void loop()
{

  value1 = myints [count];
   Serial.println(switch_colour);
  Timer1.initialize(10000); // set a timer of length 100000 microseconds (or 0.1 sec - or 10Hz => the led will blink 5 times, 5 cycles of on-and-off, per second)
  Timer1.attachInterrupt( timerIsr ); // attach the service routine here

  if(switch_colour == 1  ){
   val1 = value1;
   val2= 0;
   val3 = 0;
   val4 = 0;  
    
    
  } else if(switch_colour == 2 ){

   val1 = 0;
   val2= value1;
   val3 = 0;
   val4 = 0;  
    
  } else if(switch_colour == 3){

   val1 = 0;
   val2= 0;
   val3 = value1;
   val4 = 0;  
    
    
  } else if(switch_colour == 4){

   val1 = 0;
   val2= 0;
   val3 = 0;
   val4 = value1;  
    
  } else if(switch_colour == 5){

   val1 = value1;
   val2= 0;
   val3 = value1;
   val4 = 0;  

  } else if(switch_colour == 6){

   val1 = 0;
   val2= value1;
   val3 = value1;
   val4 = 0;  

  } else if(switch_colour == 7){

   val1 = 0;
   val2= value1;
   val3 = value1;
   val4 = 0;  

  }

  



    DmxMaster.write(1,val1);
    DmxMaster.write(2,val2);
    DmxMaster.write(3,val3);
    DmxMaster.write(4,val4);



    //Run the Colour Change function

  

}

void timerIsr()
{
  
  colour_count ++;
  
    if (colour_count == 511){
    (switch_colour + 1);
    }
  
  if (switch_colour == 8){
(switch_colour = 1);}
  
  
  if (colour_count == 512){
    (colour_count=1);}
    
    
  

    
    count++;          //array
    if(count==512){
      (count=0);}
}
    (switch_colour + 1);

Huh?

colour_count should be declared volatile.

int myints[514] = {

This array will use over 1000 bytes of memory. Which Arduino board are you using ?

switch_colour = 1;

Variables changed by an IRS should be declared as volatile

 Timer1.initialize(10000); // set a timer of length 100000 microseconds (or 0.1 sec - or 10Hz => the led will blink 5 times, 5 cycles of on-and-off, per second)
  Timer1.attachInterrupt( timerIsr ); // attach the service routine here

Do you need to do this every time through loop() ?

but switch_count does not increase

That's because you don't have a variable "switch_count".

This array will use over 1000 bytes of memory.

It will waste half of them, too. None of the values require an int for storage.

    (switch_colour + 1);

What is this supposed to do ? (I can guess)
What does it actually do ?

Ok so, i have tried changing the variable in my ISR to volatile and still no joy, the 'count' counts from 0-512 which is then used as the index for the array, i want switch colour to increment by 1 every time the colour count hits 511, this is what is not happening. I understand i will eventually need to tidy up my memory situation but for now i am seeing if this project will actually work before getting into the finer details.

People were trying to give you hints above, but basically you need to change this:
(switch_colour + 1);

to
switch_colour = switch_colour + 1;

or
switch_colour++;

The current code
(switch_colour + 1);

does add 1 to the switch_colour, but the result is not stored anywhere and gets thrown away.

Thanks for the explanation