logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[OLED + SSD1306] Jak zmienić jasność ekranu - kod i ustawienia

LinuksowyElektronik 28 Kwi 2019 11:34 1275 2
REKLAMA
  • #1 17930810
    LinuksowyElektronik
    Poziom 5  
    Witam forumowiczów.

    Posiadam wyświetlacz OLED ze sterownikiem SSD1306. Próbuję zmienić jasność ekranu bazując na fragmencie kodu ze strony: https://github.com/ThingPulse/esp8266-oled-ssd1306/issues/134

    Na wstępie dodam, że wyświetlacz działa poprawnie tzn. posiadam w pełni funkcjonalną bibliotekę do jego obsługi, a moim celem jest napisanie funkcji, która umożliwi zmianę jasności ekranu (ciemniej, jaśniej).

    Pseudokod mojej funkcji wygląda następująco:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Gdzie pod zmienne: precharge, contrast, com wpisane zostają odpowiednie wartości. Wyświetlacz inicjalizowany jest następującymi wartościami:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Krótko mówiąc działa sprawnie, ekran świeci dosyć jasno. Teraz przyszła kolej na zadanie pytań odnośnie tych 3 parametrów: PRECHARGE, CONTRAST oraz COM DESELECT. Przyznam szczerze, że opisy z dokumentacji są dla mnie niezrozumiałe i nie wiem w jaki sposób należy dobierać poszczególne wartości aby ekran przyciemnić bądź rozjaśnić.

    W dokumentacji można znaleźć takie wyjaśnienia:

    Cytat:

    10.1.17 Set Pre-charge Period (D9h)
    This command is used to set the duration of the pre-charge period. The interval is counted in number of
    DCLK, where RESET equals 2 DCLKs.

    Nie rozumiem o co w tym chodzi. "Czas trwania okresu ładowania wstępnego"? DCLK?

    Cytat:

    10.1.7 Set Contrast Control for BANK0 (81h)
    This command sets the Contrast Setting of the display. The chip has 256 contrast steps from 00h to FFh. The
    segment output current increases as the contrast step value increases.

    Ten zapis akurat rozumiem: dopuszczalne wartości kontrastu to przedział od 0 do 255.

    Cytat:

    10.1.19 Set VCOMH Deselect Level (DBh)
    This command adjusts the VCOMH regulator output.

    Tego zapisu również nie rozumiem. "Wyjście regulatora"?

    Moje pytania:
    1. Co robi parametr PRECHARGE? Jakie może przyjmować wartości i dlaczego wartość domyślna to 0xF1?
    2. Co robi parametr COM DESELECT? Jakie może przyjmować wartości i dlaczego wartość domyślna to 0x40?
    3. W jaki sposób operować wartościami, aby obniżyć/zwiększyć jasność ekranu?

    Pozdrawiam.
  • REKLAMA
  • #2 17930898
    excray
    Poziom 41  
    Jasność zmieniasz kontrastem. Tyle, że regulacja nie jest liniowa w całym zakresie.
  • #3 17930941
    phryniszak
    Poziom 11  
    To z biblioteki adaftuit:

    the range of contrast to too small to be really useful
    it is useful to dim the display

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
REKLAMA