SN74HC595 I/O Expander (shift register)

The SN74HC595 component allows you to use SN74HC595 shift registers as I/O expanders (datasheet, SparkFun) in ESPHome. It uses 3 wires (optionally 4) for communication. Optionally, it can be added to a SPI bus to allow sharing pins with other components.

Once configured, you can use any of the 8 pins for your projects. Up to 256 shift registers can be daisy-chained to provide more pins, without using more GPIO pins on the controller.

Use of the OE pin is optional. If used, the pin should be pulled up externally.

../_images/sn74hc595-full.jpg

SN74HC595 I/O Expander (shift register).

The component can be configured using GPIO pins or the SPI Bus.

Over GPIO

# Example configuration entry
sn74hc595:
  - id: 'sn74hc595_hub'
    data_pin: GPIOXX
    clock_pin: GPIOXX
    latch_pin: GPIOXX
    oe_pin: GPIOXX
    sr_count: 2

# Individual outputs
switch:
  - platform: gpio
    name: "SN74HC595 Pin #0"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 0
      number: 0
      inverted: false

Configuration variables:

  • id (Required, ID): The id to use for this SN74HC595 component.

  • data_pin (Required, Pin Schema): Pin connected to SN74HC595 SER (SD) input.

  • clock_pin (Required, Pin Schema): Pin connected to SN74HC595 SRCLK (SH_CP) pin

  • latch_pin (Required, Pin Schema): Pin connected to SN74HC595 RCLK (ST_CP) pin

  • oe_pin (Optional, Pin Schema): Pin connected to SN74HC595 OE pin

  • sr_count (Optional, int): Number of daisy-chained shift registers, up-to 256. Defaults to 1.

Over SPI

# Example configuration entry
sn74hc595:
  - id: 'sn74hc595_hub'
    type: spi
    latch_pin: GPIOXX
    oe_pin: GPIOXX
    sr_count: 2

Configuration variables:

  • id (Required, ID): The id to use for this SN74HC595 component.

  • spi_id (Required, SPI Bus Schema): The SPI bus to use. This will automatically be set to the ID of the SPI bus if there is only one.

  • type (Required, string): Must be spi.

  • latch_pin (Required, Pin Schema): Pin connected to SN74HC595 RCLK (ST_CP) pin

  • oe_pin (Optional, Pin Schema): Pin connected to SN74HC595 OE pin

  • sr_count (Optional, int): Number of daisy-chained shift registers, up to 256. Defaults to 1.

Pin configuration

# Individual outputs
switch:
  - platform: gpio
    name: "SN74HC595 Pin #0"
    pin:
      sn74hc595: sn74hc595_hub
      # Use pin number 0
      number: 0
      inverted: false
  • sn74hc595 (Required, ID): The id of the SN74HC595 component of the pin.

  • number (Required, int): The pin number.

  • inverted (Optional, boolean): If all written values should be treated as inverted. Defaults to false.

See Also