From bf2c838130b74bc26ff80d74d0fd9d14ad8632b6 Mon Sep 17 00:00:00 2001 From: Rob Tillaart Date: Wed, 26 Jun 2024 16:01:39 +0200 Subject: [PATCH] 0.4.3 ADS1x15 --- libraries/ADS1x15/ADS1X15.cpp | 2 +- libraries/ADS1x15/ADS1X15.h | 5 +- libraries/ADS1x15/CHANGELOG.md | 8 +- libraries/ADS1x15/README.md | 164 ++++++++++++------ .../ADS_high_speed_differential.ino | 2 +- .../examples/ADS_read_RDY/ADS_read_RDY.ino | 10 +- .../ADS_read_async/ADS_read_async.ino | 20 ++- .../ADS_read_async_rdy/ADS_read_async_rdy.ino | 32 ++-- .../ADS_read_comparator_1.ino | 32 ++-- libraries/ADS1x15/library.json | 2 +- libraries/ADS1x15/library.properties | 2 +- 11 files changed, 178 insertions(+), 101 deletions(-) diff --git a/libraries/ADS1x15/ADS1X15.cpp b/libraries/ADS1x15/ADS1X15.cpp index f2713ff9..04f9c722 100644 --- a/libraries/ADS1x15/ADS1X15.cpp +++ b/libraries/ADS1x15/ADS1X15.cpp @@ -1,7 +1,7 @@ // // FILE: ADS1X15.cpp // AUTHOR: Rob Tillaart -// VERSION: 0.4.2 +// VERSION: 0.4.3 // DATE: 2013-03-24 // PURPOSE: Arduino library for ADS1015 and ADS1115 // URL: https://github.com/RobTillaart/ADS1X15 diff --git a/libraries/ADS1x15/ADS1X15.h b/libraries/ADS1x15/ADS1X15.h index b1ab5c54..74beb775 100644 --- a/libraries/ADS1x15/ADS1X15.h +++ b/libraries/ADS1x15/ADS1X15.h @@ -2,7 +2,7 @@ // // FILE: ADS1X15.h // AUTHOR: Rob Tillaart -// VERSION: 0.4.2 +// VERSION: 0.4.3 // DATE: 2013-03-24 // PURPOSE: Arduino library for ADS1015 and ADS1115 // URL: https://github.com/RobTillaart/ADS1X15 @@ -12,7 +12,7 @@ #include "Arduino.h" #include "Wire.h" -#define ADS1X15_LIB_VERSION (F("0.4.2")) +#define ADS1X15_LIB_VERSION (F("0.4.3")) // allow compile time default address // address in { 0x48, 0x49, 0x4A, 0x4B }, no test... @@ -123,6 +123,7 @@ public: int8_t getError(); + // EXPERIMENTAL // see https://github.com/RobTillaart/ADS1X15/issues/22 void setWireClock(uint32_t clockSpeed = 100000); diff --git a/libraries/ADS1x15/CHANGELOG.md b/libraries/ADS1x15/CHANGELOG.md index 9c8aaab5..57e9047f 100644 --- a/libraries/ADS1x15/CHANGELOG.md +++ b/libraries/ADS1x15/CHANGELOG.md @@ -1,10 +1,15 @@ -# Change Log +# Change Log ADS1x15 All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [0.4.3] - 2024-06-25 +- Fix #74, ALERT/RDY pin documentation +- update readme.md +- minor edits examples + ## [0.4.2] - 2024-03-04 - fix #68, gain bugs ADS1x13 - add unit test for ADS1x13 @@ -12,7 +17,6 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - removed depreciated **getLastValue()** - add multiplexer section to readme.md - ## [0.4.1] - 2024-01-02 - fix some typos - minor edits diff --git a/libraries/ADS1x15/README.md b/libraries/ADS1x15/README.md index de036521..56c1f44f 100644 --- a/libraries/ADS1x15/README.md +++ b/libraries/ADS1x15/README.md @@ -22,40 +22,62 @@ you can check similar library [here](https://github.com/chandrawi/ADS1x15-ADC). This library should work for the devices mentioned below, although not all sensors support all functionality. -| Device | Channels | Resolution | Max sps | Comparator | ProgGainAMP | Notes | -|:---------:|:----------:|:------------:|:---------:|:------------:|:-------------:|:---------| -| ADS1013 | 1 | 12 | 3300 | N | N | | -| ADS1014 | 1 | 12 | 3300 | Y | Y | | -| ADS1015 | 4 | 12 | 3300 | Y | Y | | -| ADS1113 | 1 | 16 | 860 | N | N | | -| ADS1114 | 1 | 16 | 860 | Y | Y | | -| ADS1115 | 4 | 16 | 860 | Y | Y | Tested | +| Device | Channels | Resolution | Max sps | Comparator | Interrupts | ProgGainAMP | Notes | +|:---------:|:----------:|:------------:|:---------:|:------------:|:------------:|:-------------:|:---------| +| ADS1013 | 1 | 12 | 3300 | N | N | N | | +| ADS1014 | 1 | 12 | 3300 | Y | Y | Y | | +| ADS1015 | 4 | 12 | 3300 | Y | Y | Y | | +| ADS1113 | 1 | 16 | 860 | N | N | N | | +| ADS1114 | 1 | 16 | 860 | Y | Y | Y | | +| ADS1115 | 4 | 16 | 860 | Y | Y | Y | Tested | As the ADS1015 and the ADS1115 are both 4 channels these are the most -interesting from functionality point of view as these can also do +interesting from functionality point of view as these can do differential measurements. +#### Interrupts + +Besides polling the ADS1x14 and ADS1x15 support interrupts to maximize throughput +with minimal latency. For this these device has an ALERT/RDY pin. +This pin can be used both for interrupts or polling, see table of examples below. + +| example | Interrupts | notes | +|:---------------------------------:|:------------:|:-------:| +| ADS_1114_two_continuous.ino | Y | +| ADS_continuous_3_channel.ino | Y | +| ADS_continuous_4_channel.ino | Y | +| ADS_continuous_8_channel.ino | Y | +| ADS_continuous_differential.ino | Y | +| ADS_high_speed_differential.ino | Y | +| ADS_read_async_rdy.ino | polling | +| ADS_read_RDY.ino | polling | + + #### 0.4.0 Breaking change Version 0.4.0 introduced a breaking change. You cannot set the pins in **begin()** any more. -This reduces the dependency of processor dependent Wire implementations. -The user has to call **Wire.begin()** and can optionally set the Wire pins +This reduces the dependency of processor dependent Wire / I2C implementations. +The user has to call **Wire.begin()** and can optionally set the I2C pins before calling **begin()**. #### Related -- https://github.com/RobTillaart/MCP_ADC (10 & 12 bit ADC, SPI, fast) -- https://github.com/RobTillaart/PCF8591 (8 bit ADC + 1 bit DAC) +- https://github.com/RobTillaart/ADC081S 10-12 bit, single channel ADC +- https://github.com/RobTillaart/ADC08XS 10-12 bit, 2 + 4 channel ADC +- https://gammon.com.au/adc tutorial about ADC's (UNO specific) +- https://github.com/RobTillaart/MCP_ADC 10-12 bit, 1,2,4,8 channel ADC +- https://github.com/RobTillaart/ADS1x15 +- https://github.com/RobTillaart/PCF8591 8 bit single ADC (+ 1 bit DAC) ## I2C Address -The address of the ADS1113/4/5 is determined by to which pin the **ADDR** -is connected to: +The I2C address of the ADS1113 /14 /15 is determined by to which pin +the **ADDR** is connected to: | ADDR pin connected to | Address | Notes | |:-----------------------:|:---------:|:---------:| @@ -108,32 +130,39 @@ and optional the Wire interface as parameter. and optional the Wire interface as parameter. -After construction the **ADS.begin()** need to be called. This will return false -if an invalid address is used. -The function **bool isConnected()** can be used to verify the reading of the ADS. -The function **void reset()** is sets the parameters to their initial value as +After construction the **ADS.begin()** must be called, typical in **setup()**. + +- **bool begin()** Returns false if an invalid address is used. +- **bool isConnected()** is used to check if the device address is visible on I2C. +- **void reset()** sets the internal parameters to their initial value as in the constructor. For example. ```cpp -#include "ADS1X15.h" + #include "ADS1X15.h" -// initialize ADS1115 on I2C bus 1 with default address 0x48 -ADS1115 ADS(0x48); + // initialize ADS1115 on I2C bus 1 with default address 0x48 + ADS1115 ADS(0x48); -void begin() { - if (!ADS.isConnected()) { - // error ADS1115 not connected + void setup() + { + if (!ADS.begin()) + { + // invalid address ADS1115 or 0x48 not found + } + if (!ADS.isConnected()) + { + // address 0x48 not found + } } -} ``` #### I2C clock speed The function **void setWireClock(uint32_t speed = 100000)** is used to set the clock speed -in Hz of the used I2C interface. typical value is 100 KHz. +in Hz of the used I2C interface. Typical value is 100 KHz. The function **uint32_t getWireClock()** is a prototype. It returns the value set by setWireClock(). @@ -177,7 +206,7 @@ Check the [examples](https://github.com/RobTillaart/ADS1X15/blob/master/examples ```cpp float f = ADS.toVoltage(); ADS.setComparatorThresholdLow( 3.0 / f ); - ADS.setComparatorThresholdLow( 4.3 / f ); + ADS.setComparatorThresholdHigh( 4.3 / f ); ``` @@ -185,6 +214,7 @@ Check the [examples](https://github.com/RobTillaart/ADS1X15/blob/master/examples The ADS sensor can operate in single shot or continuous mode. Depending on how often conversions needed you can tune the mode. + - **void setMode(uint8_t mode)** 0 = CONTINUOUS, 1 = SINGLE (default) Note: the mode is not set in the device until an explicit read/request of the ADC (any read call will do). - **uint8_t getMode()** returns current mode 0 or 1, or ADS1X15_INVALID_MODE = 0xFE. @@ -219,22 +249,24 @@ Data rate in samples per second, based on datasheet is described on table below. Reading the ADC is very straightforward, the **readADC()** function handles all in one call. Under the hood it uses the asynchronous calls. + - **int16_t readADC(uint8_t pin = 0)** normal ADC functionality, pin = 0..3. -If the pin number is out of range, this function will return 0. -Default pin = 0 as this is convenient for 1 channel devices. +If the pin number is out of range, this function will return 0 (seems safest). +Default pin = 0 as this is convenient for the single channel devices. ```cpp -// read ADC in pin 2 -ADS.readADC(2); + // read ADC in pin 2 + ADS.readADC(2); -// read ADC in pin 0 - two ways -ADS.readADC(); -ADS.readADC(0); + // read ADC in pin 0 - two ways + ADS.readADC(); + ADS.readADC(0); ``` See [examples](https://github.com/RobTillaart/ADS1X15/blob/master/examples/ADS_minimum/ADS_minimum.ino). To read the ADC in an asynchronous way (e.g. to minimize blocking) you need call three functions: + - **void requestADC(uint8_t pin = 0)** Start the conversion. pin = 0..3. Default pin = 0 as this is convenient for 1 channel devices. - **bool isBusy()** Is the conversion not ready yet? Works only in SINGLE mode! @@ -242,12 +274,13 @@ Default pin = 0 as this is convenient for 1 channel devices. - **int16_t getValue()** Read the result of the conversion. -in terms of code +in terms of code: + ```cpp void setup() { - // other setup things here - ADS.setMode(1); // SINGLE SHOT MODE + // other setup things here + ADS.setMode(1); // SINGLE SHOT MODE ADS.requestADC(pin); } @@ -256,9 +289,9 @@ in terms of code if (ADS.isReady()) { value = ADS.getValue(); - ADS.requestADC(pin); // request new conversion + ADS.requestADC(pin); // request new conversion } - // do other things here + // do other things here } ``` See [examples](https://github.com/RobTillaart/ADS1X15/blob/master/examples/ADS_read_async/ADS_read_async.ino). @@ -276,8 +309,8 @@ For reading the ADC in a differential way there are 4 calls possible. - **int16_t readADC_Differential_1_2()** ADS1x15 only - in software (no async equivalent) ```cpp -// read differential ADC between pin 0 and 1 -ADS.readADC_Differential_0_1(0); + // read differential ADC between pin 0 and 1 + ADS.readADC_Differential_0_1(0); ``` The differential reading of the ADC can also be done with asynchronous calls. @@ -328,6 +361,7 @@ one of the two single pin values. #### ReadADC continuous mode To use the continuous mode you need call three functions: + - **void setMode(0)** 0 = CONTINUOUS, 1 = SINGLE (default). Note: the mode is not set in the device until an explicit read/request of the ADC (any read call will do). - **int16_t readADC(uint8_t pin)** or **void requestADC(uint8_t pin)** to get the continuous mode started. @@ -336,16 +370,18 @@ Note this can be a different pin, so be warned. Calling this over and over again can give the same value multiple times. ```cpp -void setup() { - // configuration things here - ADS.setMode(ADS.MODE_CONTINUOUS); - ADS.requestADC(0); // request on pin 0 -} + void setup() + { + // configuration things here + ADS.setMode(ADS.MODE_CONTINUOUS); + ADS.requestADC(0); // request on pin 0 + } -void loop() { - value = ADS.getValue() - sleep(1) -} + void loop() + { + value = ADS.getValue() + sleep(1) + } ``` See [examples](https://github.com/RobTillaart/ADS1X15/blob/master/examples/ADS_continuous/ADS_continuous.ino) @@ -381,7 +417,14 @@ This explicit stop takes extra time, however it should prevent "incorrect" readi #### Threshold registers -If the thresholdHigh is set to 0x0100 and the thresholdLow to 0x0000 +(datasheet 9.3.8) +_Conversion Ready Pin (ADS1114 and ADS1115 Only) +The ALERT/RDY pin can also be configured as a conversion ready pin. Set the most-significant bit of the +Hi_thresh register to 1 and the most-significant bit of Lo_thresh register to 0 to enable the pin as a conversion +ready pin._ + + +If the thresholdHigh is set to 0x8000 and the thresholdLow to 0x0000 the **ALERT/RDY** pin is triggered when a conversion is ready. - **void setComparatorThresholdLow(int16_t lo)** writes value to device directly. @@ -443,15 +486,15 @@ even if actual value has been 'restored to normal' value. #### QueConvert Set the number of conversions before trigger activates. + The **void setComparatorQueConvert(uint8_t mode)** is used to set the number of conversions that exceed the threshold before the **ALERT/RDY** pin is set **HIGH**. A value of 3 (or above) effectively disables the comparator. See table below. -To enable the conversion-ready function of the ALERT/RDY pin, it is necessary to set the MSB of the Hi_thresh register to 1 and the MSB of the Lo_thresh register to 0. See [examples](https://github.com/RobTillaart/ADS1X15/blob/master/examples/ADS_continuous_differential/ADS_continuous_differential.ino). - **void setComparatorQueConvert(uint8_t mode)** See table below. -- **uint8_t getComparatorQueConvert()** returns value set. +- **uint8_t getComparatorQueConvert()** returns the value set. | value | meaning | Notes | |:-------:|:------------------------------------|:----------| @@ -459,6 +502,12 @@ See [examples](https://github.com/RobTillaart/ADS1X15/blob/master/examples/ADS_c | 1 | trigger alert after 2 conversions | | | 2 | trigger alert after 4 conversions | | | 3 | Disable comparator | default | +| other | Disable comparator | | + +To enable the conversion-ready function of the **ALERT/RDY** pin, +it is necessary to set the MSB of the Hi_threshold register to 1 (value 0x8000) +and the MSB of the Lo_threshold register to 0. +See section **Threshold registers** above. #### Threshold registers comparator mode @@ -477,23 +526,26 @@ mean something different see - Comparator Mode above or datasheet. #### Must - Improve documentation (always) + - split off separate topics? #### Should +- remove the experimental **getWireClock()** as this is not really a library function + but a responsibility of the I2C library. +- investigate ADS1118 library which should be a similar SPI based ADC. #### Could +- some **void** functions could return **bool** to be more informative? - More examples - SMB alert command (00011001) on I2C bus? - sync order .h / .cpp - #### Wont (unless requested) - type flag? - constructor for ADS1X15? No as all types are supported. - ## Support If you appreciate my libraries, you can support the development and maintenance. diff --git a/libraries/ADS1x15/examples/ADS_high_speed_differential/ADS_high_speed_differential.ino b/libraries/ADS1x15/examples/ADS_high_speed_differential/ADS_high_speed_differential.ino index d1c6b10a..3f2ffdee 100644 --- a/libraries/ADS1x15/examples/ADS_high_speed_differential/ADS_high_speed_differential.ino +++ b/libraries/ADS1x15/examples/ADS_high_speed_differential/ADS_high_speed_differential.ino @@ -1,5 +1,5 @@ // -// FILE: ADS_high_speed_differential.ino.ino +// FILE: ADS_high_speed_differential.ino // AUTHOR: Rob.Tillaart // PURPOSE: read from 2 IC's for high speed differential // interrupt driven to catch all conversions. diff --git a/libraries/ADS1x15/examples/ADS_read_RDY/ADS_read_RDY.ino b/libraries/ADS1x15/examples/ADS_read_RDY/ADS_read_RDY.ino index 2b9d1f4e..7f9966f2 100644 --- a/libraries/ADS1x15/examples/ADS_read_RDY/ADS_read_RDY.ino +++ b/libraries/ADS1x15/examples/ADS_read_RDY/ADS_read_RDY.ino @@ -15,7 +15,7 @@ // EXPERIMENTAL // -// The RDY pin (or ALERT Pin) is triggered when conversion is ready +// The ALERT/RDY pin is triggered when threshold is exceeded. // @@ -24,7 +24,7 @@ ADS1115 ADS(0x48); -void setup() +void setup() { Serial.begin(115200); Serial.println(__FILE__); @@ -38,7 +38,7 @@ void setup() ADS.setDataRate(7); // 0 = slow 4 = medium 7 = fast ADS.setMode(1); // continuous mode ADS.readADC(0); // first read to trigger - + // set the thresholds to Trigger RDY pin ADS.setComparatorThresholdLow(0x0000); ADS.setComparatorThresholdHigh(0x0200); @@ -47,7 +47,7 @@ void setup() } -void loop() +void loop() { ADS.setGain(0); @@ -59,7 +59,7 @@ void loop() Serial.print(val_0); Serial.print('\t'); Serial.println(val_0 * f, 3); - + delay(1000); } diff --git a/libraries/ADS1x15/examples/ADS_read_async/ADS_read_async.ino b/libraries/ADS1x15/examples/ADS_read_async/ADS_read_async.ino index 32004cc4..45aba006 100644 --- a/libraries/ADS1x15/examples/ADS_read_async/ADS_read_async.ino +++ b/libraries/ADS1x15/examples/ADS_read_async/ADS_read_async.ino @@ -18,6 +18,9 @@ ADS1115 ADS(0x48); float f = 0; +int16_t val_0; + +uint32_t start, stop; void setup() @@ -26,12 +29,27 @@ void setup() Serial.println(__FILE__); Serial.print("ADS1X15_LIB_VERSION: "); Serial.println(ADS1X15_LIB_VERSION); + delay(100); Wire.begin(); + Wire.setClock(100000); ADS.begin(); ADS.setGain(0); f = ADS.toVoltage(); // voltage factor + + start = micros(); + ADS.requestADC(0); + stop = micros(); + Serial.println(stop - start); + delay(100); + while (ADS.isBusy()); + start = micros(); + val_0 = ADS.getValue(); + stop = micros(); + Serial.println(stop - start); + delay(100); + ADS.requestADC(0); } @@ -40,7 +58,7 @@ void loop() { if (ADS.isBusy() == false) { - int16_t val_0 = ADS.getValue(); + val_0 = ADS.getValue(); // request a new one ADS.requestADC(0); Serial.print("\tAnalog0: "); diff --git a/libraries/ADS1x15/examples/ADS_read_async_rdy/ADS_read_async_rdy.ino b/libraries/ADS1x15/examples/ADS_read_async_rdy/ADS_read_async_rdy.ino index a0adee81..4f7f0220 100644 --- a/libraries/ADS1x15/examples/ADS_read_async_rdy/ADS_read_async_rdy.ino +++ b/libraries/ADS1x15/examples/ADS_read_async_rdy/ADS_read_async_rdy.ino @@ -15,17 +15,17 @@ // EXPERIMENTAL // -// The RDY pin (or ALERT Pin) is triggered when conversion is ready +// The ALERT/RDY pin is triggered when threshold is exceeded. // #include "ADS1X15.h" ADS1115 ADS(0x48); -float f = 0; +float factor = 0; -void setup() +void setup() { Serial.begin(115200); Serial.println(__FILE__); @@ -35,32 +35,34 @@ void setup() Wire.begin(); ADS.begin(); - ADS.setGain(0); // 6.144 volt - + ADS.setGain(0); // 6.144 volt + // select slow so the led blinks visible for the eye. - ADS.setDataRate(0); // 0 = slow 4 = medium 7 = fast - f = ADS.toVoltage(); // voltage factor + ADS.setDataRate(0); // 0 = slow 4 = medium 7 = fast + factor = ADS.toVoltage(); // voltage factor ADS.requestADC(0); - - // set the thresholds to Trigger RDY pin + + // set the thresholds to trigger ALERT/RDY pin when exceeded. ADS.setComparatorThresholdLow(0x0000); ADS.setComparatorThresholdHigh(0x0200); - ADS.setComparatorQueConvert(0); // enable RDY pin !! + ADS.setComparatorQueConvert(0); // enable RDY pin !! ADS.setComparatorLatch(0); } -void loop() +void loop() { if (ADS.isReady()) { - int16_t val_0 = ADS.getValue(); - // request a new one + // read the value. + int16_t value0 = ADS.getValue(); + // request a new one. ADS.requestADC(0); + // process the read value. Serial.print("\tAnalog0: "); - Serial.print(val_0); + Serial.print(value0); Serial.print('\t'); - Serial.println(val_0 * f, 3); + Serial.println(value0 * factor, 3); } // simulate other tasks... delay(2000); diff --git a/libraries/ADS1x15/examples/ADS_read_comparator_1/ADS_read_comparator_1.ino b/libraries/ADS1x15/examples/ADS_read_comparator_1/ADS_read_comparator_1.ino index 2fefafa6..ef8d4b9d 100644 --- a/libraries/ADS1x15/examples/ADS_read_comparator_1/ADS_read_comparator_1.ino +++ b/libraries/ADS1x15/examples/ADS_read_comparator_1/ADS_read_comparator_1.ino @@ -12,11 +12,11 @@ // // measure at x (connect to AIN0). // -// +// // GND ---[LED]---[ALERT_PIN]---[ R ]--- 5V // -// Connect a LED (+ resistor) to ALERT PIN -// and see it trigger at configured way by the comparator. +// Connect a LED (+ resistor) to ALERT/RDY pin +// and see it triggered by the comparator in the configured way. // @@ -40,21 +40,21 @@ void setup() ADS.setComparatorMode(1); // 0 = TRADITIONAL 1 = WINDOW ADS.setComparatorPolarity(0); // 0 = LOW (default) 1 = HIGH - + // note NON-LATCH gives only a short pulse ADS.setComparatorLatch(1); // 0 = NON LATCH 1 = LATCH ADS.setComparatorQueConvert(0); // 0 = trigger alert after 1 conversion // set the thresholds as a number... - // ADS.setComparatorThresholdLow(5000); // change if needed - // ADS.setComparatorThresholdHigh(20000); // change if needed + // ADS.setComparatorThresholdLow(5000); // change if needed + // ADS.setComparatorThresholdHigh(20000); // change if needed // set the threshold as a voltage by using the voltage factor. - float f = ADS.toVoltage(1); // voltage factor - ADS.setComparatorThresholdLow(1.234 / f); // convert volts to number needed - ADS.setComparatorThresholdHigh(3.142 / f); // convert volts to number needed - + float factor = ADS.toVoltage(1); // voltage factor + ADS.setComparatorThresholdLow(1.234 / factor); // convert volts to number needed + ADS.setComparatorThresholdHigh(3.142 / factor); // convert volts to number needed + Serial.println(ADS.getComparatorThresholdLow()); Serial.println(ADS.getComparatorThresholdHigh()); } @@ -64,18 +64,18 @@ void loop() { ADS.setGain(0); - int16_t val_0 = ADS.readADC(0); + int16_t value0 = ADS.readADC(0); - float f = ADS.toVoltage(1); // voltage factor + float factor = ADS.toVoltage(1); // voltage factor Serial.print("\tAnalog0: "); - Serial.print(val_0); + Serial.print(value0); Serial.print('\t'); - Serial.print(val_0 * f, 3); + Serial.print(value0 * factor, 3); Serial.print('\t'); - Serial.print(ADS.getComparatorThresholdLow() * f, 3); + Serial.print(ADS.getComparatorThresholdLow() * factor, 3); Serial.print('\t'); - Serial.print(ADS.getComparatorThresholdHigh() * f, 3); + Serial.print(ADS.getComparatorThresholdHigh() * factor, 3); Serial.println(); delay(100); diff --git a/libraries/ADS1x15/library.json b/libraries/ADS1x15/library.json index 92c07933..41d1b324 100644 --- a/libraries/ADS1x15/library.json +++ b/libraries/ADS1x15/library.json @@ -15,7 +15,7 @@ "type": "git", "url": "https://github.com/RobTillaart/ADS1X15" }, - "version": "0.4.2", + "version": "0.4.3", "license": "MIT", "frameworks": "*", "platforms": "*", diff --git a/libraries/ADS1x15/library.properties b/libraries/ADS1x15/library.properties index c460e145..c04cec10 100644 --- a/libraries/ADS1x15/library.properties +++ b/libraries/ADS1x15/library.properties @@ -1,5 +1,5 @@ name=ADS1X15 -version=0.4.2 +version=0.4.3 author=Rob Tillaart maintainer=Rob Tillaart sentence=Arduino library for ADS1015 - I2C 12 bit ADC and ADS1115 I2C 16 bit ADC