HCScreen una libreria Arduino per lavorare con un display TFT

Mentre lavoravo al progetto Home-Control, mi è venuta l'idea di creare una libreria con cui puoi facilmente utilizzare il modulo TFT Display e mantenere il programma Sketch libero da queste routine.

La libreria gestisce la visualizzazione riga per riga, in cui l'altezza della riga è regolabile. La prima versione contiene tutte le funzioni per visualizzare un elenco di righe di testo e per poter scegliere utilizzando un codificatore Rotary. L'indice e il contenuto della riga selezionata possono essere letti.

La configurazione di prova è stata costruita con un ESP32 e un display TFT da 1,8 pollici. L'utilizzo di un altro controller o display non dovrebbe causare problemi finché lo schermo è compatibile con la libreria Adafruit-ST7735. I perni utilizzati devono ovviamente essere regolati.

Qui il cablaggio utilizzato con la scheda ESP32-Dev

Per l'hardware, vedere anche "Progetto HOMEControl parte 2 La sede centrale" in questo blog.

 

La biblioteca può essere Libreria HCScreenScaricato. Nell'IDE di Arduino, è sufficiente importare il file zip dal download in Gestione librerie.

Per esempi, vedere Schizzi di esempio HCScreenFor examples, see HCScreen Example Sketches

Descrizione:

HCScreen(tft)

Per creare un'istanza, è sufficiente passare l'indirizzo dell'istanza ST7735.

init()

Questa funzione deve essere chiamata dopo la modifica dell'orientamento dello schermo (orizzontale o verticale). Questa funzione determina i margini destro, sinistro, superiore e inferiore in modo che la visualizzazione sia centrata. Riempie anche l'intera area di visualizzazione con il colore di sfondo.

setLineHeight (altezza)

Questa funzione imposta l'altezza di una riga in pixel. I caratteri sono alti sette pixel. Con uno spazio in pixel, il valore minimo per l'altezza è 8. Un'altezza pari a 10 aumenta la leggibilità, ma riduce il numero di righe che possono essere rappresentate. Poiché una chiamata a questa funzione modifica la geometria, la funzione init() viene chiamata automaticamente e il contenuto viene visualizzato nuovamente.

setBaseColor (colore del carattere, colore di sfondo)

Questa funzione può essere utilizzata per impostare il colore del carattere e lo sfondo per la visualizzazione. I valori di colore vengono passati in formato a 3 byte (rosso, verde, blu) come è comune nelle pagine Web. Quindi, ad esempio 0xFF0000 - rosso, 0x00FF00 , g, g, g, o 0x0000FF - blu. I colori vengono quindi convertiti automaticamente nel formato a 16 bit per la visualizzazione. Poiché il colore di sfondo viene modificato, questa funzione riempie automaticamente l'area di visualizzazione con il nuovo colore di sfondo e visualizza nuovamente il contenuto.

setSelectionColor (colore del carattere, colore di sfondo)

Questa funzione può essere utilizzata per impostare il colore del carattere e lo sfondo per la riga selezionata. Il formato è lo stesso di setBaseColor. Il contenuto viene visualizzato nuovamente.

setTitleColor (colore del carattere, colore di sfondo)

Questa funzione può essere utilizzata per impostare il colore del carattere e lo sfondo per la riga del titolo. Il formato è lo stesso di setBaseColor. Il contenuto viene visualizzato nuovamente.

showContent()

Questa funzione rappresenta un titolo che può essere impostato e tutte le righe dall'elenco di righe di testo che si possono trovare sul display. La visualizzazione proviene da una riga iniziale variabile, in modo che la finestra di visualizzazione possa essere spostata su un numero maggiore di righe. Quando la selezione è selezionata, la riga selezionata viene visualizzata in base ai colori impostati per le righe selezionate.

setTitle(testo) 

setTitle (testo, colore del carattere, colore di sfondo)

Il testo specificato viene visualizzato come riga del titolo nella parte superiore del display. In alternativa, è possibile passare il colore per il tipo di carattere e lo sfondo. Il contenuto dell'annuncio viene spostato di una riga verso il basso.

setMenu(elenco di voci, numero)

L'elenco dei contenuti per la visualizzazione viene compilato con il menu Elementi e la selezione è abilitata. La prima voce viene selezionata automaticamente e il display inizia con la prima voce. Numero indica il numero di voci.

selectNext()

Quando la selezione è abilitata, viene selezionata la riga successiva fino al raggiungimento della fine dell'elenco di contenuto. Se la riga selezionata non è compresa nell'intervallo rappresentabile, la riga iniziale viene incrementata in modo che la parte visualizzata dell'elenco contenuto venga spostata verso l'alto e la riga selezionata rimanga visibile. Se la selezione non è selezionata, la riga iniziale viene incrementata di uno in modo che il blocco di testo visualizzato venga spostato verso l'alto. Questa operazione viene eseguita fino a quando non viene visualizzata l'ultima riga dell'elenco dei contenuti nell'ultima riga dell'area di visualizzazione.

selectPrevious()

Quando la selezione è abilitata, viene selezionata la riga precedente fino al raggiungimento dell'inizio dell'elenco dei contenuti. Se la riga selezionata non rientra nell'intervallo rappresentabile, la riga iniziale viene ridotta in modo che la parte visualizzata dell'elenco contenuto venga spostata verso il basso e la riga selezionata rimanga visibile. Se la selezione non è selezionata, la riga iniziale viene ridotta di uno in modo che il blocco di testo visualizzato venga spostato verso il basso. Questa operazione viene eseguita fino a quando la prima riga dell'elenco dei contenuti non viene visualizzata nella prima riga dell'area di visualizzazione.

getSelection()

Questa funzione restituisce il contenuto di testo della riga attualmente selezionata o una stringa vuota se la selezione non è abilitata.

getSelectionIndex()

Questa funzione restituisce il numero di riga (a partire da 0) della riga attualmente selezionata o -1 se la selezione non è selezionata.

Schizzo di esempio:

L'esempio ESP32_Control_Center di schizzo mostra come un semplice controllo menu può essere realizzato con un codificatore Rotary. La libreria RotaryEncoder viene utilizzata per guidare l'encoder Rotary.

Un menu principale con 15 voci e un sottomenu con tre voci sono definiti. Nel menu principale è possibile testare il movimento del blocco di visualizzazione se si va fino in fondo con la selezione. Se si fa clic sul Rotary Encoder quando è selezionata la riga "Sottomenu", viene visualizzato il sottomenu. Se si fa clic sull'encoder Rotary quando nel sottomenu è selezionata la linea posteriore, viene visualizzato di nuovo il menu principale.

 

 

DisplaysEsp-32Projekte für fortgeschritteneCasa intelligente

2 Kommentare

Winfried Prschfeld

Winfried Prschfeld

ERROR – keine Bilder, keine Sketch etc im Beitrag!

Jens

Jens

moin,
funktioniert bei mir leider nicht. bekomme folgende fehlermeldung:

Documents/Arduino/libraries/HCScreen-master/HCScreen.cpp: In member function ‘void HCScreen::showIcon(uint8_t, uint8_t, const HCIcon*)’:
Documents/Arduino/libraries/HCScreen-master/HCScreen.cpp:226:22: error: ‘class Adafruit_ST7735’ has no member named ‘Color565’
color = tft.Color565(icon→pixel_data[idx++], icon→pixel_data[idx++], icon→pixeldata[idx++]);

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Post di blog consigliati

  1. Installa ESP32 ora dal gestore del consiglio di amministrazione
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - Programmazione ESP tramite WLAN