Realizzazione di grafici sui display LCD 1602 e 2004 - FLProg.
Chi ha detto che i display LCD servono solo per i simboli? Se così fosse, questi display non sarebbero così diffusi nell'ambiente Arduino. Questi display hanno 8 celle per memorizzare i simboli "personalizzati", cioè simboli che puoi disegnare tu stesso, ad esempio, utilizzando vari servizi online come questo: https://maxpromer.github.io/LCD-Character-Creator/. L'array di byte risultante viene inserito nello sketch, inviato al display, e quindi può essere utilizzato utilizzando il comando write().
Nel programma FLProg ho creato due blocchi personalizzati, che ho adattato per funzionare con i blocchi integrati "Display on the chip HD44780". Vediamo come funzionano questi blocchi:
1. FillColumn - riempire colonna. Questo blocco è realizzato in base a due funzioni:
- initColumn - per inizializzare i simboli personalizzati. Nota: se si utilizzano simboli personalizzati, prima di visualizzare il riempimento della colonna è necessario chiamare la funzione initColumn(); per caricare i simboli nella memoria del display.
- fillColumn - per visualizzare il simbolo desiderato con le relative impostazioni di dimensione e posizione sul display.
- <COLUMN> - la numerazione va da sinistra a destra partendo da zero (per il display 2004 sono le colonne da 0 a 19 per il 1602 sono le colonne da 0 a 15). Il valore per l'argomento verrà fornito tramite il parametro COLUMN.
- <ROW> - la numerazione va dall'alto verso il basso, partendo da zero (per il display 2004 sono le righe 0, 1, 2, 3 per 1602 sono le righe 0, 1). Il valore per l'argomento verrà fornito tramite il parametro ROW.
- <HEIGHT> - altezza verticale della colona. Ovviamente l'altezza + la posizione verticale di partenza non deve superare l'altezza verticale in caratteri del display. Cioè per il 2004 l'altezza massima è 4, per il 1602 la massima è 2. Il valore per l'argomento verrà fornito tramite il parametro HEIGHT.
- <MIN_VAL> - valore minimo per riempire la colonna, non verrà riempita al di sotto del valore impostato (tipo di dati da int -32768 a 32767). Il valore per l'argomento verrà fornito tramite il parametro MIN_VAL.
- <MAX_VAL> - valore massimo per riempire la colonna, non verrà riempita oltre il valore impostato (tipo di dati int da -32768 a 32767). Il valore per l'argomento verrà fornito tramite il parametro MAX_VAL.
- <Input value>
- valore per riempire la colonna. Il valore per l'argomento verrà fornito tramite l'input InVal.
2. FillRow - riempire la riga. Anche questo blocco e creato in base a due funzioni:
- initRow - per inizializzare i simboli personalizzati. Nota: se si utilizzano simboli personalizzati, prima di visualizzare il riempimento della riga è necessario chiamare la funzione initRow(); per caricare i simboli nella memoria del display.
- fillRow - per visualizzare il simbolo desiderato con le relative impostazioni di dimensione e posizione sul display.
- <COLUMN_1> - è responsabile della posizione del punto sinistro della riga, la numerazione va da sinistra a destra partendo da zero (per il display 2004 sono le colonne da 0 a 19 per il 1602 sono le colonne da 0 a 15). Il valore per l'argomento verrà fornito tramite il parametro COLUMN_1.
- <ROW_1> - è responsabile della posizione del punto sinistro della riga, la numerazione va dall'alto verso il basso partendo da zero (per il display 2004 sono le righe 0, 1, 2, 3 per 1602 sono le righe 0, 1). Il valore per l'argomento verrà fornito tramite il parametro ROW_1.
- <LENGTH> - tutta la larghezza della riga in orizzontale. Ovviamente la larghezza + posizione orizzontale di partenza (colonna) non deve superare la larghezza orizzontale del display in caratteri. Il valore per l'argomento verrà fornito tramite il parametro LENGTH.
- <Input value> - un numero da 0 a 100 – percentuale della riga. Qualsiasi valore viene portato nell'intervallo 0-100 utilizzando il blocco integrato
"Scala". Il valore per l'argomento verrà fornito tramite l'input InVal.