2020-06-27 23:10:05 +02:00
|
|
|
SN74HC595 I/O Expander (shift register)
|
|
|
|
=======================================
|
|
|
|
|
|
|
|
.. seo::
|
|
|
|
:description: Instructions for setting up SN74HC595 shift registers as digital port expanders in ESPHome.
|
|
|
|
|
|
|
|
The SN74HC595 component allows you to use SN74HC595 shift registers as I/O expanders
|
|
|
|
(`datasheet <http://www.ti.com/lit/ds/symlink/sn74hc595.pdf>`__,
|
|
|
|
`SparkFun`_) in ESPHome. It uses 3 wires (optionally 4) for communication.
|
|
|
|
|
|
|
|
Once configured, you can use any of the 8 pins for your projects. Up-to 4 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.
|
|
|
|
|
|
|
|
.. figure:: images/sn74hc595-full.jpg
|
|
|
|
:align: center
|
|
|
|
:width: 80.0%
|
|
|
|
|
|
|
|
SN74HC595 I/O Expander (shift register).
|
|
|
|
|
|
|
|
.. _SparkFun: https://www.sparkfun.com/products/13699
|
|
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
# Example configuration entry
|
|
|
|
sn74hc595:
|
|
|
|
- id: 'sn74hc595_hub'
|
|
|
|
data_pin: D5
|
|
|
|
clock_pin: D8
|
|
|
|
latch_pin: D7
|
|
|
|
oe_pin: D6
|
|
|
|
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:
|
2021-03-11 19:31:31 +01:00
|
|
|
************************
|
2020-06-27 23:10:05 +02:00
|
|
|
|
|
|
|
- **id** (**Required**, :ref:`config-id`): The id to use for this SN74HC595 component.
|
|
|
|
- **data_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): Pin connected to SN74HC595 SER input.
|
|
|
|
- **clock_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): Pin connected to SN74HC595 SRCLK pin
|
|
|
|
- **latch_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): Pin connected to SN74HC595 RCLK pin
|
|
|
|
- **oe_pin** (*Optional*, :ref:`Pin Schema <config-pin_schema>`): Pin connected to SN74HC595 OE pin
|
|
|
|
- **sr_count** (*Optional*, int): Number of daisy-chained shift registers, up-to 4. Defaults to ``1``.
|
|
|
|
|
2021-03-09 02:53:04 +01:00
|
|
|
|
|
|
|
Pin configuration variables:
|
2021-03-11 19:31:31 +01:00
|
|
|
****************************
|
2021-03-09 02:53:04 +01:00
|
|
|
|
|
|
|
- **sn74hc595** (**Required**, :ref:`config-id`): The id of the SN74HC595 component of the pin.
|
|
|
|
- **number** (**Required**, integer): The pin number.
|
|
|
|
- **inverted** (*Optional*, boolean): If all written values should be treated as inverted.
|
|
|
|
Defaults to ``False``.
|
|
|
|
|
|
|
|
|
2020-06-27 23:10:05 +02:00
|
|
|
See Also
|
|
|
|
--------
|
|
|
|
|
|
|
|
- :doc:`switch/gpio`
|
|
|
|
- :doc:`binary_sensor/gpio`
|
2021-03-09 02:53:04 +01:00
|
|
|
- `Serial to Parallel Shifting-Out with a 74HC595 <https://www.arduino.cc/en/tutorial/ShiftOut>`__
|
2020-06-27 23:10:05 +02:00
|
|
|
- :apiref:`sn74hc595/sn74hc595.h`
|
|
|
|
- :ghedit:`Edit`
|