@@ -110,7 +110,7 @@ uint16_t Adafruit_ADS1X15::getDataRate() { return m_dataRate; }
110
110
@return the ADC reading
111
111
*/
112
112
/* *************************************************************************/
113
- uint16_t Adafruit_ADS1X15::readADC_SingleEnded (uint8_t channel) {
113
+ int16_t Adafruit_ADS1X15::readADC_SingleEnded (uint8_t channel) {
114
114
if (channel > 3 ) {
115
115
return 0 ;
116
116
}
@@ -156,8 +156,7 @@ uint16_t Adafruit_ADS1X15::readADC_SingleEnded(uint8_t channel) {
156
156
;
157
157
158
158
// Read the conversion results
159
- // Shift 12-bit results right 4 bits for the ADS1015
160
- return readRegister (ADS1X15_REG_POINTER_CONVERT) >> m_bitShift;
159
+ return getLastConversionResults ();
161
160
}
162
161
163
162
/* *************************************************************************/
@@ -199,18 +198,7 @@ int16_t Adafruit_ADS1X15::readADC_Differential_0_1() {
199
198
;
200
199
201
200
// Read the conversion results
202
- uint16_t res = readRegister (ADS1X15_REG_POINTER_CONVERT) >> m_bitShift;
203
- if (m_bitShift == 0 ) {
204
- return (int16_t )res;
205
- } else {
206
- // Shift 12-bit results right 4 bits for the ADS1015,
207
- // making sure we keep the sign bit intact
208
- if (res > 0x07FF ) {
209
- // negative number - extend the sign to 16th bit
210
- res |= 0xF000 ;
211
- }
212
- return (int16_t )res;
213
- }
201
+ return getLastConversionResults ();
214
202
}
215
203
216
204
/* *************************************************************************/
@@ -252,18 +240,7 @@ int16_t Adafruit_ADS1X15::readADC_Differential_2_3() {
252
240
;
253
241
254
242
// Read the conversion results
255
- uint16_t res = readRegister (ADS1X15_REG_POINTER_CONVERT) >> m_bitShift;
256
- if (m_bitShift == 0 ) {
257
- return (int16_t )res;
258
- } else {
259
- // Shift 12-bit results right 4 bits for the ADS1015,
260
- // making sure we keep the sign bit intact
261
- if (res > 0x07FF ) {
262
- // negative number - extend the sign to 16th bit
263
- res |= 0xF000 ;
264
- }
265
- return (int16_t )res;
266
- }
243
+ return getLastConversionResults ();
267
244
}
268
245
269
246
/* *************************************************************************/
@@ -345,6 +322,43 @@ int16_t Adafruit_ADS1X15::getLastConversionResults() {
345
322
}
346
323
}
347
324
325
+ /* *************************************************************************/
326
+ /* !
327
+ @brief Returns true if conversion is complete, false otherwise.
328
+
329
+ @param counts the ADC reading in raw counts
330
+
331
+ @return the ADC reading in volts
332
+ */
333
+ /* *************************************************************************/
334
+ float Adafruit_ADS1X15::computeVolts (int16_t counts) {
335
+ // see data sheet Table 3
336
+ float fsRange;
337
+ switch (m_gain) {
338
+ case GAIN_TWOTHIRDS:
339
+ fsRange = 6 .144f ;
340
+ break ;
341
+ case GAIN_ONE:
342
+ fsRange = 4 .096f ;
343
+ break ;
344
+ case GAIN_TWO:
345
+ fsRange = 2 .048f ;
346
+ break ;
347
+ case GAIN_FOUR:
348
+ fsRange = 1 .024f ;
349
+ break ;
350
+ case GAIN_EIGHT:
351
+ fsRange = 0 .512f ;
352
+ break ;
353
+ case GAIN_SIXTEEN:
354
+ fsRange = 0 .256f ;
355
+ break ;
356
+ default :
357
+ fsRange = 0 .0f ;
358
+ }
359
+ return counts * (fsRange / (32768 >> m_bitShift));
360
+ }
361
+
348
362
/* *************************************************************************/
349
363
/* !
350
364
@brief Returns true if conversion is complete, false otherwise.
0 commit comments