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.