Is there a way to make this code more effective?

I don't know if it would be more efficient, but better practice is that when you have code that is repeated with just values changing, put he code into a function.

if(mode == 0){
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  }

The above code is repeated over and over with just the values changing, one could make a function like this:.

void digOut(boolean led1State, boolean led2State, boolean led3State)
{
  digitalWrite(led1, led1State);
  digitalWrite(led2, led2State);
  digitalWrite(led3, led3State);
}

Then call the function with:

if(mode == 0)
{
  digOut(LOW, LOW, LOW);
}
or 
if(mode == 5)
{
  digOut(LOW, HIGH, HIGH);
}