Termocamera IR- scala colore

@faca87 prova cosi e vedi se migliora.

// Array di unsigned int che contiene i valori dei colori da visualizzare
const uint16_t camColors[] = { ................  };

// Array di float che andrà a memorizzare i valori di 
// intensità IR letti dal sensore AMG (matrice 8x8 = 64 pixel)
float pixels[AMG88xx_PIXEL_ARRAY_SIZE];

// Dimensione orizzontale e verticale di ciascun rettangolo che verrà disegnato
uint16_t displayPixelWidth, displayPixelHeight;


void setup () {
  ..........

  // Ciclo che disegna la scala dei colori verticale spostata in setup()
  for(int i=0; i<tft.height(); i++){
    uint8_t colorIndex= map(i, 0, tft.height(), 0, 255);
    colorIndex = constrain(colorIndex, 0, 255);
    tft.drawLine(0, i, 2, i, camColors[colorIndex]);
  }
  
}

void loop() {
  // lettura della matrice 8x8 dal sensore AMG e salvataggio dei valori nell'array pixels[]
  amg.readPixels(pixels);

  // per ciascun valore letto viene disegnato un rettangolino del colore equivalente
  for(int i=0; i<AMG88xx_PIXEL_ARRAY_SIZE; i++){
	// Estrazione del colore da visualizzare in funzione del valore IR 
	// I colori totali sono 256, quindi viene approssimato con map a quello più vicino
    uint8_t colorIndex = map(pixels[i], MINTEMP, MAXTEMP, 0, 255);
    colorIndex = constrain(colorIndex, 0, 255);

    // Questa istruzione disegna un rettangolo del colore selezionato 
	// spostando di volta in volta la posizione XY in funzione di i
	// In totale saranno 64 rettangoli con dimensione pari a tft.with/8 e tft.height/8 
	// Di solito i display tft da 1.44" sono 128*128 pixel

    // Se si tratta della prima colonna, il rettangolo disegnato sarà più piccolo di 3 pixel
    if (floor(i / 8) == 0)
      tft.drawCanvas( 3,  displayPixelWidth * (i % 8),
            displayPixelHeight, displayPixelWidth, camColors[colorIndex]);
    else 
      tft.fillRect(displayPixelHeight * floor(i / 8), displayPixelWidth * (i % 8),
            displayPixelHeight, displayPixelWidth, camColors[colorIndex]);
  }
  
 
}