ST7735 Display
==============

.. seo::
    :description: Instructions for setting up a ST7735 display drivers.
    :keywords: ST7735
    :image: st7735.jpg

ST7735 Display Driver.

Usage
-----

The ST7735 component allows you to use a ST7735 display
(`datasheet and information <https://learn.adafruit.com/1-8-tft-display/downloads>`__,
`Adafruit <https://www.adafruit.com/product/358>`__) in ESPHome.
It uses the :ref:`SPI Bus <spi>` for communication.

.. figure:: images/st7735.jpg
    :align: center
    :width: 75.0%

    ST7735 Display

There are numerous board types out there. Some initialize differently as well. This driver will take a few options to narrow down the right settings.

.. code-block:: yaml

    # Example configuration entry
    display:
      - platform: st7735
        model: "INITR_18BLACKTAB"
        reset_pin: D4
        cs_pin: D1
        dc_pin: D2
        rotation: 0
        device_width: 128
        device_height: 160
        col_start: 0
        row_start: 0
        eight_bit_color: true
        update_interval: 5s

Configuration variables:
************************

- **model** (**Required**, string): The model to use, one of the following options:

  - ``INITR_BLACKTAB``
  - ``INITR_GREENTAB``
  - ``INITR_REDTAB``
  - ``INITR_MINI160X80``
  - ``INITR_18BLACKTAB``
  - ``INITR_18REDTAB``

- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The CS pin.
- **dc_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The DC pin.
- **device_width** (**Required**, int): The device width. 128 is default
- **device_height** (**Required**, int): The device height. 160 is default
- **col_start** (**Required**, int): The starting column offset. Default value depends on **model**.
- **row_start** (**Required**, int): The starting row offset. Default value depends on **model**.
- **use_bgr** (*Optional*, boolean): Use BGR mode. Default is false.
- **invert_colors** (*Optional*, boolean): Invert LCD colors. Default is false.
- **eight_bit_color** (*Optional*, boolean): 8bit mode. Default is false. This saves 50% of the buffer required for the display.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin.
- **update_interval** (*Optional*, :ref:`config-time`): Time between display updates. Default is 1s.

Memory notes:
*************

- 8Bit color saves 50% of the buffer required.
- ``eight_bit_color: true`` 160x128 = 20480 *Important for memory constrained devices*
- ``eight_bit_color: false`` 160x128x2 = 40960


Models:
*******

- INITR_GREENTAB
- INITR_REDTAB
- INITR_BLACKTAB
- INITR_MINI160X80
- INITR_18BLACKTAB
- INITR_18REDTAB


See Also
--------

- :ref:`spi`
- :doc:`/components/display/index`
- :apiref:`st7735/st7735.h`
- :ghedit:`Edit`
