LcdDisplay.HD44780.MCP23008 (lcd_display v0.3.0)

View Source

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

Usage

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

1 devices detected on 1 I2C buses
config = %{
  i2c_bus: "i2c-1",          # I2C bus name
  i2c_address: 0x20,         # 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.MCP23008.start(config)

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

Pin assignment

This module assumes the following pin assignment:

MCP23008HD44780
GP0-
GP1RS (Register Select)
GP2E (Enable)
GP3DB4 (Data Bus 4)
GP4DB5 (Data Bus 5)
GP5DB6 (Data Bus 6)
GP6DB7 (Data Bus 7)
GP7LED

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.

Types

config()

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

The configuration options.

display_driver()

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

Functions

execute(display, command)

Executes the specified command and returns a new display state.

start(config)

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

Initializes the LCD driver and returns the initial display state.