RPi ADC I2C Python
Reading ADC values over I2C using Python
I (AndrewS) recently bought a ADC Pi 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.
Instructions
Files in the /etc directory below need to be edited as root, so use sudo nano filename
- 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
- Enable the pi 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 pi user to the i2c group with: sudo adduser $USER i2c
- Install the Quick2Wire Python API
- install git with: sudo apt-get install git
- download the API with: git clone https://github.com/quick2wire/quick2wire-python-api.git
- enable Python to access the API by adding export PYTHONPATH=$PYTHONPATH:$HOME/quick2wire-python-api/src to the end of /home/pi/.profile
- Reboot to enable all the above changes
- sudo reboot
- Download and run the demo script
- download it with: wget http://www.andrewscheller.co.uk/adc_demo.py
- make it executable with: chmod +x adc_demo.py
- run it with: ./adc_demo.py
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).