Is there a way to make this code more effective?

This seems to do absolutely nothing in your current scheme:

//looping the menu
  if(mode > 6 && locker == 0){
    mode = 0;
    delay(10);
      Serial.println(mode);
  }

mode is a state variable that is constrained to 0-5 by your state machine. It would actually behoove you to encode the mode choices as a switch statement.