No, non devo aver capito, non riesco a fare quello che dici, perchè la prima barretta, quella bianca, ha altre coordinate, non è lineare in orizzontale, ma sale anche, vedi le vecchie foto del display, quindi mi rimane sempre un IF per sapere se fare quel gruppo o meno, ho fatto questo, vedi il codice, l'unica cosa se accendendo il display il valore è già al massimo, non esegue i primi colori... Stessa cosa se scendono velocemente, non cancella le barre + alte, perchè l'IF superiore non viene eseguito. Preciso che magari in realtà non accadrà cmq mai, per un motore è impossibile variare così rapidamente i giri...
//********************* verifica se deve cancellare i rettangoli ************
if (giri < giriprec) { // verifico se i giri sono minori dei prec
if (giri < 18) { // if che fa solo barrette di colore bianco
myGLCD.setColor(0, 0, 0); // colore dei rettangoli neri, cancello le barrette bianche
for (int i = giriprec; i >= giri; i--) // cancella i rettangoli
{
xpos = x[i]; //defnisce lo spostamento orizzontale
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);
}
giriprec = giri;
}
if (giri > 17) {
myGLCD.setColor(0, 0, 0); // colore dei rettangoli neri, cancello le barrette bianche e rosse
for (int i = giriprec; i >= giri; i--) //cancella i rettangoli
{
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);
}
giriprec = giri;
}
}
//**************************** fine verifica cancellazione rettangoli ***
//*************************** verifica se deve costruire dei rettangoli ***
if (giri > giriprec) { // verifico se i giri sono maggiori dei prec
if (giri < 18) { // if che fa solo barrette di colore bianco
myGLCD.setColor(255, 255, 255); //da il colore dei rettangolini
for (int i = giriprec; i < giri; i++) // crea i primi rettangoli bianchi
{
xpos = x[i]; //defnisce lo spostamento orizzontale
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);
}
giriprec = giri;
}
if (giri > 17) { // if che fa barrette di colore bianco e rosso
for (int i = giriprec; i < giri; i++) // disegna i rettangoli
{
if (giri > 17 && giri < 51) {
myGLCD.setColor(0, 255, 0); //da il colore dei rettangolini verde
}
if (giri > 50) {
myGLCD.setColor(255, 0, 0); //da il colore dei rettangolini rosso
}
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);
}
giriprec = giri;
}
}
//******************************** fine costruzione rettangoli