114 lines
2.5 KiB
Markdown
114 lines
2.5 KiB
Markdown
# MCP23008 Module
|
|
| Since | Origin / Contributor | Maintainer | Source |
|
|
| :----- | :-------------------- | :---------- | :------ |
|
|
| 2015-03-02 | [AllAboutEE](https://github.com/AllAboutEE) | [AllAboutEE](https://github.com/AllAboutEE) | [mcp23008.lua](../../lua_modules/mcp23008/mcp23008.lua) |
|
|
|
|
This Lua module provides access to [MCP23008](http://ww1.microchip.com/downloads/en/DeviceDoc/21919e.pdf) I²C I/O Expander.
|
|
|
|
!!! note
|
|
This module requires `i2c` C module built into firmware.
|
|
|
|
### Require
|
|
```lua
|
|
mcp32008 = require("mcp32008")
|
|
```
|
|
|
|
### Release
|
|
```lua
|
|
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](../../lua_examples/mcp23008/mcp23008_buttons.lua) and [mcp23008_leds.lua](../../lua_examples/mcp23008/mcp23008_leds.lua) files.
|