Close

TFT displej a definování barev

Úvodní stránka Fórum Hardware Displeje TFT displej a definování barev

Označeno štítky: 

  • Toto téma obsahuje celkem 4 odpovědi. Do diskuze (4 diskutující) se naposledy zapojil uživatel Aleš a poslední změna proběhla před 9 roky a 5 měsíci.
Aktuálně jsou na stránce zobrazeny 4 příspěvky - 1. až 4. (celkem z 4)
  • Autor
    Příspěvky
  • #6949
    Aleš
    Účastník

    Dobrý den,

    Mám TFT displej, u kterého jsou barvy definované takto:
    #define BLACK 0x0000
    #define BLUE 0x001F
    #define RED 0xF800
    #define GREEN 0x07E0
    #define CYAN 0x07FF
    #define MAGENTA 0xF81F
    #define YELLOW 0xFFE0
    #define WHITE 0xFFFF

    Chtěl jsem si vytvořit vlastní barvy, ale vůbec jsem nepochopil jak. RGB to není, CMYK také ne. Když se snažím měnit jednotlivá čísla, tak nemohu vůbec přijít na nějakou logiku mezi změnou čísla a změnou barvy 🙁
    Víte někdo jak na to??

    #6952
    posjirka
    Účastník
    #6959
    Zbyšek Voda
    Účastník

    Dobrý den, TFT displeje často používají 16-bit barevný režim.
    Podívejte se sem – http://www.willamette.edu/~gorr/classes/GeneralGraphics/imageFormats/. Pod „16 bit color“ je tam tento režim popsaný.

    Zkráceně: Jak to funguje?
    Na popis barvy máte celkem 16 bitů. 5 na červenou, 6 na zelenou, 5 na modrou (lidské oko je na zelenou citlivější, proto má o jeden bit více). Bity jsou uspořádány takto:

    |r|r|r|r|r|g|g|g|g|g|g|b|b|b|b|b|

    Jak dosáhnout barev?
    Na červenou a modrou máte 5 bitů – tedy hodnoty 0 – 31
    Na zelenou 6 bitů – 0 – 63

    Kod:

    uint16_t barva(int r, int g, int b){
        r = r % 32;
        g = g % 64;
        b = b % 32;    
        
        r = r << 11;
        g = g << 5;
        
        return r | g | b;
    }

    Tedy uint16_t(0,0,0) vrátí hodnotu černé.

    #6965
    Aleš
    Účastník

    Dík. Ten generátor na http://www.rinkydinkelectronics.com/calc_rgb565.php je super. Dokonce vygenerované barvy odpovídají barvám na displeji. Že by to byl nějaký RGB565 kód by mě asi nenapadlo 🙁

Aktuálně jsou na stránce zobrazeny 4 příspěvky - 1. až 4. (celkem z 4)
  • Pro reakci na toto téma se musíte přihlásit.