SSD1331 OLED Display
====================

.. seo::
    :description: Instructions for setting up SSD1331 OLED display drivers.
    :image: ssd1331.jpg

.. _ssd1331-spi:

Usage
-----

The ``ssd1331_spi`` display platform allows you to use
SSD1331 (`datasheet <https://cdn-shop.adafruit.com/datasheets/SSD1331_1.2.pdf>`__,
`Adafruit <https://www.adafruit.com/product/684>`__)
displays with ESPHome. This component is for displays that are connected via the 4-Wire :ref:`SPI bus <spi>`.

.. figure:: images/ssd1331-full.jpg
    :align: center
    :width: 75.0%

    SSD1331 96x64 OLED Display

Connect CLK (CK), MOSI (SI), CS (OC), DC, and RST (R) to pins on your ESP. For power, the Adafruit modules
require 5 volts connected to their ``+`` pin. Connect the GND or G pin to ground.

.. code-block:: yaml

    # Example configuration entry
    spi:
      clk_pin: D5
      mosi_pin: D7

    display:
      - platform: ssd1331_spi
        reset_pin: D0
        cs_pin: D8
        dc_pin: D1
        lambda: |-
          it.print(0, 0, id(font), "Hello World!");

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

- **dc_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The DC pin.
- **reset_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The RESET pin.
- **cs_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): The pin on the ESP that that the CS line is connected to.
  The CS line can be connected to GND if this is the only device on the SPI bus.
- **lambda** (*Optional*, :ref:`lambda <config-lambda>`): The lambda to use for rendering the content on the display.
  See :ref:`display-engine` for more information.
- **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``.
- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`.
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation.

Configuration examples
**********************

You may wish to add a ``color:`` section to your YAML configuration to make using colors easier; please see
:ref:`color <config-color>` for more detail on this optional configuration section.

.. code-block:: yaml

    color:
      - id: my_red
        red: 100%
        green: 3%
        blue: 5%

    ...

    display:
        ...
        lambda: |-
          it.rectangle(0,  0, it.get_width(), it.get_height(), id(my_red));


To bring in color images:

.. code-block:: yaml

    image:
      - file: "image.jpg"
        id: my_image
        resize: 96x64
        type: RGB

    ...

    display:
        ...
        lambda: |-
          it.image(0, 0, id(my_image));

See Also
--------

- :doc:`index`
- :apiref:`ssd1331_base/ssd1331_base.h`
- `SSD1331 Library <https://github.com/adafruit/Adafruit-SSD1331-OLED-Driver-Library-for-Arduino>`__ by `Adafruit <https://www.adafruit.com/>`__
- :ghedit:`Edit`
