LcdDisplay.HD44780.MCP23008 (lcd_display v0.2.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 busesconfig = %{
  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:
| MCP23008 | HD44780 | 
|---|---|
| GP0 | - | 
| GP1 | RS (Register Select) | 
| GP2 | E (Enable) | 
| GP3 | DB4 (Data Bus 4) | 
| GP4 | DB5 (Data Bus 5) | 
| GP5 | DB6 (Data Bus 6) | 
| GP6 | DB7 (Data Bus 7) | 
| GP7 | LED | 
Link to this section Summary
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
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.