HCScreen een Arduino-bibliotheek voor het werken met een TFT-display

Tijdens het werken aan het Home-Control project kwam ik op het idee om een bibliotheek te maken waarmee je de TFT Display-module gemakkelijk gebruiken en het Sketch-programma vrij van deze routines houden.

De bibliotheek beheert de weergave regel voor regel, waarbij de rijhoogte verstelbaar is. De eerste versie bevat alle functies om een lijst met tekstregels weer te geven en te kunnen selecteren met behulp van een Roterende encoder. De index en de inhoud van de geselecteerde rij kunnen worden uitgelezen.

De testopstelling is gebouwd met een ESP32 en een 1,8 inch TFT-scherm. Het gebruik van een andere controller of display mag geen problemen veroorzaken zolang het scherm compatibel is met de Adafruit-ST7735-bibliotheek. De gebruikte pinnen moeten uiteraard worden aangepast.

Hier de bedrading gebruikt met de ESP32-Dev boord

Voor hardware, zie ook "Project HOMEControl Deel 2 Het hoofdkwartier" in deze blog.

 

De bibliotheek kan HCScreen-bibliotheekGedownload. Importeer het ZIP-bestand in de Arduino IDE in de bibliotheekbeheerder.

Zie HCScreen-voorbeeldschetsen voor voorbeelden

Beschrijving:

HCScreen(tft)

Als u een instantie wilt maken, geeft u alleen het adres van de INSTANTIE ST7735 door.

Init()

Deze functie moet worden aangeroepen nadat de oriëntatie van het display (liggend of staand) is gewijzigd. Deze functie bepaalt de marges rechts, links, boven en onder, zodat het scherm gecentreerd is. Het vult ook het hele weergavegebied met de achtergrondkleur.

setLineHeight (hoogte)

Met deze functie wordt de hoogte ingesteld voor een rij pixels. De tekens zijn zeven pixels hoog. Met een pixelruimte is de minimumwaarde voor hoogte = 8. Een hoogte=10 verhoogt de leesbaarheid, maar vermindert het aantal rijen dat kan worden weergegeven. Omdat een aanroep naar deze functie de geometrie wijzigt, wordt de functie init() automatisch aangeroepen en wordt de inhoud opnieuw weergegeven.

setBaseColor (lettertypekleur, achtergrondkleur)

Deze functie kan worden gebruikt om de kleur van het lettertype en de achtergrond voor weergave in te stellen. De kleurwaarden worden doorgegeven in 3-byte-indeling (rood, groen, blauw) zoals gebruikelijk is op webpagina's. Dus bijvoorbeeld 0xFF0000 = rood, 0x00FF00 = gün of 0x0000FF = blauw. De kleuren worden vervolgens automatisch geconverteerd naar de 16-bits indeling voor het display. Omdat de achtergrondkleur wordt gewijzigd, vult deze functie het weergavegebied automatisch met de nieuwe achtergrondkleur en geeft de inhoud opnieuw weer.

setSelectionColor (lettertypekleur, achtergrondkleur)

Deze functie kan worden gebruikt om de kleur van het lettertype en de achtergrond voor de geselecteerde regel in te stellen. De indeling is hetzelfde als setBaseColor. De inhoud wordt opnieuw weergegeven.

setTitleColor (lettertypekleur, achtergrondkleur)

Deze functie kan worden gebruikt om de kleur van het lettertype en de achtergrond voor de titelregel in te stellen. De indeling is hetzelfde als setBaseColor. De inhoud wordt opnieuw weergegeven.

showContent()

Deze functie vertegenwoordigt een titel die kan worden ingesteld en zoveel regels uit de lijst met tekstregels als u op het display vinden. Het display is van een variabele startlijn, zodat het weergavevenster over een groter aantal rijen kan worden verplaatst. Wanneer de selectie is geselecteerd, wordt de geselecteerde rij weergegeven op basis van de ingestelde kleuren voor geselecteerde rijen.

setTitle(tekst) 

setTitle (tekst, lettertypekleur, achtergrondkleur)

De opgegeven tekst wordt weergegeven als de titelregel boven aan het display. Als alternatief kan de kleur voor lettertype en achtergrond worden doorgegeven. De inhoud van de advertentie wordt één regel naar beneden verplaatst.

setMenu(lijst met vermeldingen, getal)

De inhoudslijst voor het display is gevuld met het menu Items en de selectie is ingeschakeld. Het eerste item wordt automatisch geselecteerd en het display begint met de eerste vermelding. Getal geeft het aantal vermeldingen aan.

selectNext()

Wanneer selectie is ingeschakeld, wordt de volgende regel geselecteerd totdat het einde van de inhoudslijst is bereikt. Als de geselecteerde rij zich buiten het vertegenwoordigbare bereik bevindt, wordt de startregel verhoogd zodat het weergegeven gedeelte van de inhoudslijst wordt omhoog verplaatst en de geselecteerde rij zichtbaar blijft. Als de selectie niet is geselecteerd, wordt de beginregel met één verhoogd, zodat het weergegeven tekstblok wordt omhoog geschoven. Dit gebeurt totdat de laatste regel van de inhoudslijst wordt weergegeven in de laatste rij van het weergavegebied.

selectPrevious()

Wanneer de selectie is ingeschakeld, wordt de vorige regel geselecteerd totdat het begin van de inhoudslijst is bereikt. Als de geselecteerde rij zich buiten het vertegenwoordigbare bereik bevindt, wordt de beginlijn verlaagd zodat het weergegeven gedeelte van de inhoudslijst naar beneden wordt verplaatst en de geselecteerde rij zichtbaar blijft. Als de selectie niet is geselecteerd, wordt de beginregel met één optie verkleind, zodat het weergegeven tekstblok naar beneden wordt verplaatst. Dit gebeurt totdat de eerste regel van de inhoudslijst wordt weergegeven in de eerste rij van het weergavegebied.

getSelectie()

Met deze functie wordt de tekstinhoud van de geselecteerde regel of een lege tekenreeks geretourneerd als de selectie niet is ingeschakeld.

getSelectionIndex()

Met deze functie wordt het regelnummer (te beginnen met 0) van de geselecteerde rij of -1 geretourneerd als de selectie niet is geselecteerd.

Voorbeeldschets:

Het voorbeeld van Sketch ESP32_Control_Center laat zien hoe een eenvoudige menubediening gerealiseerd kan worden met een Rotary encoder. De RotaryEncoder bibliotheek wordt gebruikt om de Rotary Encoder te besturen.

Een hoofdmenu met 15 inzendingen en een submenu met drie inzendingen zijn gedefinieerd. In het hoofdmenu u de beweging van het displayblok testen als u helemaal naar beneden gaat met de selectie. Als u op de Rotary Encoder klikt wanneer de regel 'Submenu' is geselecteerd, wordt het submenu weergegeven. Als u op de Rotary Encoder klikt wanneer de regel Terug is geselecteerd in het submenu, wordt het hoofdmenu opnieuw weergegeven.

 

 

DisplaysEsp-32Projekte für fortgeschritteneSmart home

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

Aanbevolen blog berichten

  1. Installeer ESP32 nu van de raad van bestuur
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP Programmeren via Wi-Fi