mcp23008.md 2.5 KB

MCP23008 Module

Since Origin / Contributor Maintainer Source
2015-03-02 AllAboutEE AllAboutEE mcp23008.lua

This Lua module provides access to MCP23008 I²C I/O Expander.

!!! note

This module requires `i2c` C module built into firmware.

Require

mcp32008 = require("mcp32008")

Release

mcp32008 = nil
package.loaded["mcp32008"] = nil

mcp32008.begin()

Sets the MCP23008 device address’s last three bits.

!!! note

The address is defined as binary `0100[A2][A1][A0]` where `A2`, `A1`, and `A0` are defined by the connection of the pins, e.g. if the pins are connected all to GND then the parameter address  will need to be `0x0`.

Syntax

mcp23008.begin(address, pinSDA, pinSCL, speed)

Parameters

  • address: The 3 least significant bits (LSB) of the address
  • pinSDA: The pin to use for SDA
  • pinSCL: The pin to use for SCL
  • speed: The speed of the I2C signal

Returns

nil

mcp23008.writeGPIO()

Writes a byte of data to the GPIO register.

Syntax

mcp23008.writeGPIO(dataByte)

Parameters

  • dataByte: The byte of data to write

Returns

nil

mcp23008.readGPIO()

Reads a byte of data from the GPIO register

Syntax

mcp23008.readGPIO()

Parameters

None

Returns

One byte of data

mcp23008.writeIODIR()

Writes one byte of data to the IODIR register.

Syntax

mcp23008.writeIODIR(dataByte)

Parameters

  • dataByte: The byte of data to write

Returns

nil

mcp23008.readIODIR()

Reads a byte from the IODIR register

Syntax

mcp23008.readIODIR()

Parameters

None

Returns

The byte of data in IODIR

mcp23008.writeGPPU()

Writes a byte of data to the GPPU (Pull-UP resistors register)

Syntax

mcp23008.writeIODIR(dataByte)

Parameters

  • dataByte: the value to write to the GPPU register. Each bit in this byte is assigned to an individual GPIO pin

Returns

nil

mcp23008.readGPPU()

Reads the GPPU (Pull-UP resistors register) byte

Syntax

mcp23008.readGPPU()

Parameters

None

Returns

The GPPU byte i.e. state of all internal pull-up resistors

Notes

Other examples of using this module can be found in mcp23008_buttons.lua and mcp23008_leds.lua files.