Tell me more ×
Raspberry Pi Stack Exchange is a question and answer site for users and developers of hardware and software for Raspberry Pi. It's 100% free, no registration required.

I am trying to figure out how to use the ADS1115 ADC with my RPi - using some example bash code for i2cset and i2cget I found in this forum, I'm getting inconsistent readings. There seems to be a pattern - so I assume I am doing something wrong in terms of setting up the conversion and/or reading the results. Channel 0 of the ADS1115 is connected to a 10kohm thermistor with a 10k resistor pulled up to 3.3v. The ADS1115 is running off the 3.3 volts from the Rpi. The output does change as the thermistor is heated.

I'm using the latest Raspbian kernel, which has the i2c driver included.

Here's my bash code (I tried averaging the readings):

#! /bin/bash
s=0
n=10
for ((i=1; i<=n; i++))
do
  i2cset -y 1 0x48 1 0xC385 w  # convert ADC input 0
  r=`i2cget -y 1 0x48 0 w` # read ADC input 0
  x=$((((((0xff00 & r)) / 256)) + $((((0x00ff & r)) * 256)))) # reverse words 0 and 1
  echo reading $i:  raw: $r decimal: $x
  s=$((s + x)) # sum
done

echo average: $((s / n))

# typical results - note that every second 
# reading is shifted.

pi@raspberrypi ~/adc $ sudo ./conv0.sh 
reading 1: raw: 0x6e21 decimal: 8558
reading 2: raw: 0x2217 decimal: 5922
reading 3: raw: 0x6821 decimal: 8552
reading 4: raw: 0x7116 decimal: 5745
reading 5: raw: 0xa923 decimal: 9129
reading 6: raw: 0x3916 decimal: 5689
reading 7: raw: 0xc023 decimal: 9152
reading 8: raw: 0x8d1a decimal: 6797
reading 9: raw: 0xd11e decimal: 7889
reading 10: raw: 0xcb1a decimal: 6859
average: 7429

Anyone have any ideas as to what I am doing wrong? It looks like there is a bit out of place somewhere...

I am an old-school (rusty) C programmer and would prefer to write C code rather than bash scripts or Python (presumably it would be more efficient) so if anyone has any C examples I'd be grateful. Most of the references I've found are for the Arduino in Python...

thx

Don

share|improve this question
I don't know what's wrong with the bash code, but there is some limited documentation to be found on libi2c-dev in /usr/share/doc/libi2c-dev/dev-interface.gz. "less" that for enlightenment. The package libi2c-dev must be installed if you haven't yet. – ergosys Dec 29 '12 at 4:20

Know someone who can answer? Share a link to this question via email, Google+, Twitter, or Facebook.

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.