Barra grafica contagiri su display TFT 7

Ciao ragazzi,
con i vostri aiuti sono arrivato a fare qualcosa, la barra in salita mi funziona, ora devo provare a fare la parte che torna indietro... Una domanda, Paulus mi ha messo il dubbio, in questo modo scrivo sempre i rettangolini o ne faccio uno per uno? Ovvero, faccio operazioni inutili anche a giri costanti? Ho fatto tre IF e tre FOR perchè la barra è divisa in 3 colori, è corretto così?
Grazie ancora

valore = analogRead(ingrana);
  giri = map (valore, 0, 1024, 0, 73);

  if (giri <= 16) {
    myGLCD.setColor(255, 255, 255);  //colore dei rettangoli bianchi
    for (int i = 0; i < giri; i++)
    {
      int xpos = x[i];   //defnisce lo spostamento orizzontale
      int ypos = y[i];  //posizione partenza da vert
      x2 = xpos + 7; //larghezza dei rettangoli
      y2 = ypos + 25; //altezza dei rettangoli
      myGLCD.fillRect(xpos, ypos, x2, y2);
    }
  }

  if (giri > 16 && giri <= 55) {
    myGLCD.setColor(0, 255, 0);  //colore dei rettangoli verde
    for (int i = 16; i < giri; i++)
    {
      int xpos = x[i];   //defnisce lo spostamento orizzontale
      y1 = (3); //posizione partenza da vert
      x2 = xpos + 7; //larghezza dei rettangoli
      y2 = y1 + 25; //altezza dei rettangoli
      myGLCD.fillRect(xpos, y1, x2, y2);
    }
  }

  if (giri > 55) {
    myGLCD.setColor(255, 0, 0);  //colore dei rettangoli verde
    for (int i = 55; i < giri; i++)
    {
      int xpos = x[i];   //defnisce lo spostamento orizzontale
      y1 = (3); //posizione partenza da vert
      x2 = xpos + 7; //larghezza dei rettangoli
      y2 = y1 + 25; //altezza dei rettangoli
      myGLCD.fillRect(xpos, y1, x2, y2);
    }
  }