LCD 0.96'' na modulech Waveshare (kontrolér ST7735S)

12.05.2022

Tento příspěvek bude hodně "upovídaný" a bez obrázků. V něm se dostáváme k vlastnímu ukázkovému kódu obsluhy displeje ze stránek výrobce a individuální implementaci.
Jak jsem již dříve avizoval chtěl bych vytvořit vlastní modul s třídou, která bude do začátku poskytovat pouze nezbytně nutnou funkčnost. V první verzi proto kreslení grafiky, řízení podsvícení a podobné "srandičky" určitě vynechám. Co se týče "barviček" si to ještě rozmyslím. Zkusím obsloužit zobrazovaní čistě textu(ů). Pozice nebude určována absolutními souřadnicemi v rámci rozlišení displeje (160x80bodů), ale jednoduše číslem textového řádku (případně sloupcem v rámci řádku). Tak aby bylo co nejjednodušší pro psaní kódu využivajího danou třídu.
Stejně jako u ukázkového kódu jsou moje třídy zděděny ze základní třídy MicroPythonu "FrameBuffer" (modul "framebuf"). K ruce jsem si musel samozřejmě vzít dokumentaci kontroléru ST7735S. Ta je dostupná na stráce technické podpory výrobce modulu Pico LCD 0.96 společnosti Waveshare

https://www.waveshare.com/wiki/Pico-LCD-0.96

Lze proto i nadále používat původní metody třídy "FrameBuffer" (z modulu "framebuf") jako jsou použity v ukázkovém kódu společnosti Waveshare

FrameBuffer.fill
FrameBuffer.fill_rect
FrameBuffer.hline
FrameBuffer.vline
FrameBuffer.text

a další dle dokumentace třídy na URL https://docs.micropython.org/en/latest/library/framebuf.html

Vzal jsem proto původní DEMO společnosti Waveshare a předělal ho na samostatný modul "LCD_WS096.py" s definicí třídy (prozatím jedné jediné), kterou jsem nazval "LCD_WS096lite". Tak aby šlo použít kdykoliv a pohodlně v rámci libovolného dalšího projektu. Co se týče "textového" režimu jsem metodou pokus omyl zjistil, že se pohodlně dá displej zaplnit maticí znaků 20x8. 20 znaků na každém z 8 řádků. Metoda "FrameBuffer.text", která se interně samozřejmě i nadále používá umí znaky prezentovat do matice 8x8 bodů. Tomu jsem přizpůsobil svoji nadstavbu.

O proti originálu provedeny změny:
- přejmenovány konstanty s definicí základních barev (B&W + RGB)
- doplněny kódy barev CMY
- značně zjednodušena počáteční inicializace
*nově v metode "initialization" aby se nepletlo nováčkům v Pythonu, jako jsem i já, s konstruktorem třidy ___init___
- vynecháno prozatím řízení podsvícení displeje
- přejmenována medota "SetWindows" na "set_window"
*jde přece jenom pouze o interní metodu, kterou není potřeba vně používat
- doplněny nové metody (přepracovány stávající) pro běžné použití:
Show
ClearDisplay
FillDisplay
Text2Row

- vytvořeno nové DEMO "LCD_WS096_demo.py" využívající nový modul
- doplněny komentáře (prozatím česká mutace)

Výsledek mého snažení najdete na samostatné stránce pod tlačítkem níže.

Všechny výše uvedené odkazy byly v době uveřejnění příspěvku platné a funkční. Pokud zjistíte opak prosím o zpětnou vazbu. Předem děkuji.

© Všechna práva vyhrazena 2023, Kulíček R.
Vytvořeno službou Webnode Cookies
Vytvořte si webové stránky zdarma! Tento web je vytvořený pomocí Webnode. Vytvořte si vlastní stránky zdarma ještě dnes! Vytvořit stránky