LcdDisplay.HD44780.PCF8574 (lcd_display v0.2.0) View Source

Knows how to commuticate with HD44780 type display through the 8-bit I/O expander PCF8574. You can turn on/off the backlight.

Usage

iex(2)>  Circuits.I2C.detect_devices
Devices on I2C bus "i2c-1":
* 39  (0x27)

1 devices detected on 1 I2C buses
config = %{
  i2c_bus: "i2c-1",          # I2C bus name
  i2c_address: 0x27,         # 7-bit address
  rows: 2,                   # the number of display rows
  cols: 16,                  # the number of display columns
  font_size: "5x8"           # "5x10" or "5x8"
}

# Start the LCD driver and get the initial display state.
{:ok, display} = LcdDisplay.HD44780.PCF8574.start(config)

# Run a command and the display state will be updated.
{:ok, display} = LcdDisplay.HD44780.PCF8574.execute(display, {:print, "Hello world"})

Pin assignment

This module assumes the following pin assignment:

PCF8574HD44780
P0RS (Register Select)
P1-
P2E (Enable)
P3LED
P4DB4 (Data Bus 4)
P5DB5 (Data Bus 5)
P6DB6 (Data Bus 6)
P7DB7 (Data Bus 7)

Link to this section Summary

Types

The configuration options.

Functions

Executes the specified command and returns a new display state.

Initializes the LCD driver and returns the initial display state.

Link to this section Types

Specs

config() :: %{
  optional(:rows) => String.t(),
  optional(:cols) => pos_integer(),
  optional(:font_size) => pos_integer()
}

The configuration options.

Specs

display_driver() :: LcdDisplay.HD44780.Driver.t()

Link to this section Functions

Link to this function

execute(display, command)

View Source

Executes the specified command and returns a new display state.

Specs

start(config()) :: {:ok, display_driver()} | {:error, any()}

Initializes the LCD driver and returns the initial display state.