RPi ADC I2C Python

From eLinux.org
Revision as of 17:44, 14 January 2013 by Bgirardot (talk | contribs) (Changed PYTHONPATH to point to root of the directory instead of src/ directory - See discussion page for reason)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Back to the Hub, or the Tutorials page.

Reading ADC values over I2C using Python

I (AndrewS) recently bought a ADC Pi (Analogue to Digital Converter) RaspberryPi addon board from http://www.abelectronics.co.uk/ - there were a few tricky points in getting it working, so I thought I'd write this step-by-step tutorial. The instructions below are all based on the 2012-09-18-wheezy-raspbian distro but should be equally applicable to other distros. Update: I've just tested the instructions below on a 2012-10-28-wheezy-raspbian distro and they still work fine.


Files in the /etc directory below need to be edited as root, so use sudo nano filename

  1. Enable I2C support
    • add i2c-dev to the end of /etc/modules
    • comment out (with a #) the line that says blacklist i2c-bcm2708 in /etc/modprobe.d/raspi-blacklist.conf
  2. Enable the current user to access I2C hardware
    • install i2c-tools (includes i2cdetect and adds the i2c group) with: sudo apt-get update && sudo apt-get install i2c-tools
    • add the current user to the i2c group with: sudo adduser $USER i2c
  3. Install the Quick2Wire Python API
  4. Reboot to enable all the above changes
    • sudo reboot
  5. Download and run the demo script

If everything went well you should now find that you get:
1: 0.000000
2: 0.000000
3: 0.000000
4: 0.000000
5: 0.000000
6: 0.000000
7: 0.000000
8: 0.000000
printed repeatedly to the screen. You can test that the ADC is working by using e.g. a bent paperclip to connect the "5V" on the board to one of the eight ADC channels, and the corresponding reading on screen should then read approximately 5V (in fact, the voltage output by your PSU). Stop the script with the usual Ctrl+C.

Back to the Hub, or the Tutorials page.