Skip to content

Commit 82f17ce

Browse files
authored
Merge pull request #94 from JonNelson/abstract-and-expose-getfsrange
Abstract and expose `getFsRange()`
2 parents c834224 + 08580ef commit 82f17ce

File tree

3 files changed

+27
-15
lines changed

3 files changed

+27
-15
lines changed

Adafruit_ADS1X15.cpp

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -276,39 +276,49 @@ int16_t Adafruit_ADS1X15::getLastConversionResults() {
276276

277277
/**************************************************************************/
278278
/*!
279-
@brief Compute volts for the given raw counts.
280-
281-
@param counts the ADC reading in raw counts
279+
@brief Return the current fs range for the configured gain
282280
283-
@return the ADC reading in volts
281+
@return the fsRange for the configured gain, or zero.
282+
Zero should not be possible thereby indicating error
284283
*/
285284
/**************************************************************************/
286-
float Adafruit_ADS1X15::computeVolts(int16_t counts) {
285+
float Adafruit_ADS1X15::getFsRange() {
287286
// see data sheet Table 3
288-
float fsRange;
289287
switch (m_gain) {
290288
case GAIN_TWOTHIRDS:
291-
fsRange = 6.144f;
289+
return 6.144f;
292290
break;
293291
case GAIN_ONE:
294-
fsRange = 4.096f;
292+
return 4.096f;
295293
break;
296294
case GAIN_TWO:
297-
fsRange = 2.048f;
295+
return 2.048f;
298296
break;
299297
case GAIN_FOUR:
300-
fsRange = 1.024f;
298+
return 1.024f;
301299
break;
302300
case GAIN_EIGHT:
303-
fsRange = 0.512f;
301+
return 0.512f;
304302
break;
305303
case GAIN_SIXTEEN:
306-
fsRange = 0.256f;
304+
return 0.256f;
307305
break;
308306
default:
309-
fsRange = 0.0f;
307+
return 0.0f;
310308
}
311-
return counts * (fsRange / (32768 >> m_bitShift));
309+
}
310+
311+
/**************************************************************************/
312+
/*!
313+
@brief Compute volts for the given raw counts.
314+
315+
@param counts the ADC reading in raw counts
316+
317+
@return the ADC reading in volts
318+
*/
319+
/**************************************************************************/
320+
float Adafruit_ADS1X15::computeVolts(int16_t counts) {
321+
return counts * (getFsRange() / (32768 >> m_bitShift));
312322
}
313323

314324
/**************************************************************************/

Adafruit_ADS1X15.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ constexpr uint16_t MUX_BY_CHANNEL[] = {
6666
ADS1X15_REG_CONFIG_MUX_SINGLE_1, ///< Single-ended AIN1
6767
ADS1X15_REG_CONFIG_MUX_SINGLE_2, ///< Single-ended AIN2
6868
ADS1X15_REG_CONFIG_MUX_SINGLE_3 ///< Single-ended AIN3
69-
}; ///< MUX config by channel
69+
}; ///< MUX config by channel
7070

7171
#define ADS1X15_REG_CONFIG_PGA_MASK (0x0E00) ///< PGA Mask
7272
#define ADS1X15_REG_CONFIG_PGA_6_144V (0x0000) ///< +/-6.144V range = Gain 2/3
@@ -162,6 +162,7 @@ class Adafruit_ADS1X15 {
162162
int16_t readADC_Differential_2_3();
163163
void startComparator_SingleEnded(uint8_t channel, int16_t threshold);
164164
int16_t getLastConversionResults();
165+
float getFsRange();
165166
float computeVolts(int16_t counts);
166167
void setGain(adsGain_t gain);
167168
adsGain_t getGain();

keywords.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ readADC_Differential_0_1 KEYWORD2
66
readADC_Differential_2_3 KEYWORD2
77
startComparator_SingleEnded KEYWORD2
88
getLastConversionResults KEYWORD2
9+
getFsRange KEYWORD1
910
computeVolts KEYWORD2
1011
setGain KEYWORD2
1112
getGain KEYWORD2

0 commit comments

Comments
 (0)