Driver for ADS1115
CODE: example2.bas
ADS1115_ADDRESS = &h48
AD1115_CONV_REG = 0
AD1115_CONF_REG = 1
AD1115_HI_T_REG = 2
AD1115_LO_T_REG = 3
' datasheet http://www.ti.com/lit/ds/symlink/ads1115.pdf
dim BUFF_IN(2)
i2c.setup 4,5
AD1115_setup 0, 1, 1
' scale in volt
scale = 4.096 / 32768
v = 0
for i = 0 to 100000
AD1115_read v
print v * scale
next i
end
'---------------------------------------------------------
' INPUT MULTIPLEX :
' AINp is the input positive
' AINn is the input negative
'0 : AINp = AIN0 and AINn = AIN1
'1 : AINp = AIN0 and AINn = AIN3
'2 : AINp = AIN1 and AINn = AIN3
'3 : AINp = AIN2 and AINn = AIN3
'4 : AINp = AIN0 and AINn = GND
'5 : AINp = AIN1 and AINn = GND
'6 : AINp = AIN2 and AINn = GND
'7 : AINp = AIN3 and AINn = GND
'GAIN
'0 : FSR = ±6.144 V
'1 : FSR = ±4.096 V
'2 : FSR = ±2.048 V
'3 : FSR = ±1.024 V
'4 : FSR = ±0.512 V
'5 : FSR = ±0.256 V
'6 : FSR = ±0.256 V
'7 : FSR = ±0.256 V
'DATA RATE
'0 : 8 SPS
'1 : 16 SPS
'2 : 32 SPS
'3 : 64 SPS
'4 : 128 SPS
'5 : 250 SPS
'6 : 475 SPS
'7 : 860 SPS
sub AD1115_setup(inp_mux, gain, rate)
local conf
conf = (inp_mux << 12) or (gain << 9) or (rate << 5) or 3 ' + disable comparator
BUFF_IN(0) = (conf and &hff00) >> 8 : BUFF_IN(1) = conf and &hff
i2c.WriteRegArray ADS1115_ADDRESS, AD1115_CONF_REG, 2, BUFF_IN()
end sub
sub AD1115_read(ret)
i2c.ReadRegArray ADS1115_ADDRESS, AD1115_CONV_REG, 2, BUFF_IN()
ret = BUFF_IN(0) << 8 + BUFF_IN(1)
if ret > 32768 then ret = ret - 65536
end sub