Skip to main content

A module to access GPIO expanders MCP23S17 from a Raspberry Pi.

Project description

This is a Python module that abstracts the GPIO expander MCP23S17. It is intended for the use on a Raspberry Pi.

Provided Functions

As a quick overview, the module provides the following functions. Refer to the module documentation for details:

  • open

  • close

  • setPullupMode

  • setDirection

  • digitalRead

  • digitalWrite

  • writeGPIO

  • readGPIO

Installation

If not already done, you need to install PIP via:

sudo apt-get install python-dev python-pip

Install from PyPI:

pip install RPiMCP23S17

Example

The following demo peridically toggles all pins of two MCP23S17 components:

from RPiMCP23S17.MCP23S17 import MCP23S17
import time

mcp1 = MCP23S17(bus=0x00, pin_cs=0x00, device_id=0x00)
mcp2 = MCP23S17(bus=0x00, pin_cs=0x00, device_id=0x01)
mcp1.open()
mcp2.open()

for x in range(0, 16):
    mcp1.setDirection(x, mcp1.DIR_OUTPUT)
    mcp2.setDirection(x, mcp1.DIR_OUTPUT)

print "Starting blinky on all pins (CTRL+C to quit)"
while (True):
    for x in range(0, 16):
        mcp1.digitalWrite(x, MCP23S17.LEVEL_HIGH)
        mcp2.digitalWrite(x, MCP23S17.LEVEL_HIGH)
    time.sleep(1)

    for x in range(0, 16):
        mcp1.digitalWrite(x, MCP23S17.LEVEL_LOW)
        mcp2.digitalWrite(x, MCP23S17.LEVEL_LOW)
    time.sleep(1)

    # the lines below essentially have the same effect as the lines above
    mcp1.writeGPIO(0xFFF)
    mcp2.writeGPIO(0xFFF)
    time.sleep(1)

    mcp1.writeGPIO(0x0)
    mcp2.writeGPIO(0x0)
    time.sleep(1)

Change Log

1.0.0

  • Added possibility to set reset pin

0.2.3

  • Fixed error “NameError: global name ‘MCP23S17_GPIOB’ is not defined” in function digitalRead

0.2.2

  • Fixed example in documentation

0.2.1

  • Updated documentation

0.2.0

  • Reorganized module structure

0.1.1

  • Enhanced package setup script setup.py

  • Updated documentation

0.1.0

  • Initial release

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page