Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Colorbar per un display grafico

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[1] Colorbar per un display grafico

Messaggioda Foto UtentePeternek » 18 mag 2018, 16:21

Ciao a tutti! Vi chiedo per favore di aiutarmi con un dubbio. Ho provato a costruire una colorbar con Arduino Due e un display grafico che mi serve per un progetto. I colori sono a 16bit per il display Adafruit HX8357, risoluzione 320x480.
Per spiegarmi meglio cosa intendo per colorbar vi dico subito cosa voglio e cosa invece ottengo:
colormale.jpg

quella reale somiglia molto alla seconda ma non riesco a farvela vedere perché non ho fatto foto ed il display è a scuola
Sta di fatto che la colorbar io ho provato a farla così di "fantasia mia" semplicemente partendo dal valore esadecimale del blu sommando un tot e stampando nel frattempo ogni una riga per arrivare fino al rosso.
Sommo 170 perché secondo i conti \Delta=\frac{val(red)-val(blu)}{l_{cbar}}=170 dove l_{cbar} è la lunghezza in pixel della colorbar, e dovrebbe arrivare così in un ciclo for dal blu al rosso. In codice:

Codice: Seleziona tutto
//setup display e varie che non metto tra le quali
Adafruit_HX8357 tft = new Adafruit_HX8357(TFT_CS, TFT_DC, TFT_RST);

//dentro al loop
int color = 0x07E0;          //lo inizializzo blu
for(int i=60; i<420; i++)
      {
        tft.drawLine(i, 300, i, 319, color);
        color=171+color;
      }


Qual è il problema secondo voi? forse sbagli ad aumentare di 170 come devo aumentare allora per fare il colorbar così come voglio?
Avatar utente
Foto UtentePeternek
50 1 5
Utente disattivato per decisione dell'amministrazione proprietaria del sito
 
Messaggi: 94
Iscritto il: 17 ott 2017, 22:38

1
voti

[2] Re: Colorbar per un display grafico

Messaggioda Foto Utentebiget » 18 mag 2018, 17:25

fuori strada :mrgreen:
premesso che blu dovrebbe essere 0x1f
un colore a 16bit dedica 5 bit al rosso, 6 al verde, 5 al blu

tu hai ipotizzato che magicamente partendo da un numero e salendo si componga automaticamente l'arcobaleno :mrgreen: e questo è sbagliato
devi raggionare per ogni componente ed ognuno col suo peso

e quindi
Codice: Seleziona tutto
rosso = x;
verde = x;
blu = x;

for ( ... larghezza del display )
tft.drawFastHLine(0, i, tft.width(), colore);
... omissis ... parte di controllo delle componenti ... (6 casi )
colore = rosso << 11 | verde << 5 | blu;
Avatar utente
Foto Utentebiget
1.155 3 7
CRU - Account cancellato su Richiesta utente
 
Messaggi: 464
Iscritto il: 16 dic 2016, 19:47

0
voti

[3] Re: Colorbar per un display grafico

Messaggioda Foto UtentePeternek » 18 mag 2018, 18:42

Grazie mille per la risposta! :ok:
Però non capisco perché 6 casi? io ne vedo 4:
parto dal blu:
1. incremento il verde e arrivo al ciano (basta sommare i*2^5 così fa lo shift)
2. decremento il blu arrivo al verde (decremento fino al valore desiderato)
3. incremento il rosso arrivo al giallo (incremento con i*2^11)
4. decremento il verde arrivo al rosso (decremento con -i*2^6)

in totale vengono 2*2^6+2*2^5=192 iterazioni... posso allora fare la colorbar larga 384 cosi cambio colore ogni 2
Avatar utente
Foto UtentePeternek
50 1 5
Utente disattivato per decisione dell'amministrazione proprietaria del sito
 
Messaggi: 94
Iscritto il: 17 ott 2017, 22:38


Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti