---- **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