IP Selctor with the MCP23008 and MCP23017
Preparing the RPi for I2C:
http://raspberrypi-aa.github.io/session3/i2c.html
http://www.gsurf.de/vorbereiten-des-raspberry-pi-auf-i2c/
Open the file:
$ sudo nano /etc/modprobe.d/raspi-blacklist.conf
Comment out:
#blacklist i2c-bcm2708
Open the file:
$ sudo nano /etc/modules
Add:
i2c-dev
Load modules:
$ sudo modprobe i2c_bcm2708 $ sudo modprobe i2c-dev
Check the i2c modules:
$ lsmod Module Size Used by i2c_dev 3792 0 i2c_bcm2708 3408 0
Install some programs:
$ sudo apt-get update $ sudo apt-get install i2c-tools $ sudo apt-get install python-smbus
Check the address:
$ sudo i2cdetect -y 1 $ sudo i2cdump -y 1 0x20
Library:
https://learn.adafruit.com/mcp230xx-gpio-expander-on-the-raspberry-pi/overview
Download Adafruit libraries:
$ wget https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/archive/master.zip
unpack:
$ unzip master.zip
Example:
# Set IP Address with MCP23008 from Adafruit_MCP230xx import * # Use busnum = 0 for older Raspberry Pi's (256MB) # Use busnum = 1 for new Raspberry Pi's (512MB with mounting holes) mcp = Adafruit_MCP230XX(busnum = 1, address = 0x20, num_gpios = 8) # Set pins to input with the pullup resistor enabled for i in range(0,8): mcp.pullup(i, 1) # Read pins and display the results # bitshift output, third bit is the output meineIP=0 for i in range(0,8): print "%d: %x" % (i, mcp.input(i) >> i) meineIP = meineIP + mcp.input(i) print meineIP