Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of ADS1015 by
Adafruit_ADS1015.h
00001 /**************************************************************************/ 00002 /*! 00003 @file Adafruit_ADS1015.h 00004 @author K. Townsend (Adafruit Industries) 00005 @license BSD (see LICENSE.txt) 00006 00007 Ported to mbed by Arve Seljebu - arve0.github.io 00008 00009 This is a library for the Adafruit ADS1015 breakout board 00010 ----> https://www.adafruit.com/products/1083 00011 00012 Adafruit invests time and resources providing this open source code, 00013 please support Adafruit and open-source hardware by purchasing 00014 products from Adafruit! 00015 00016 @section HISTORY 00017 00018 v1.0 - First release 00019 v1.1 - Added ADS1115 support - W. Earl 00020 v1.1.1 - Ported to mbed - Arve Seljebu 00021 */ 00022 /**************************************************************************/ 00023 00024 #include <mbed.h> 00025 00026 /*========================================================================= 00027 I2C ADDRESS/BITS 00028 -----------------------------------------------------------------------*/ 00029 #define ADS1015_ADDRESS (0x48) // 1001 000 (ADDR = GND) 00030 /*=========================================================================*/ 00031 00032 /*========================================================================= 00033 CONVERSION DELAY (in mS) 00034 -----------------------------------------------------------------------*/ 00035 #define ADS1015_CONVERSIONDELAY (1) 00036 #define ADS1115_CONVERSIONDELAY (8) 00037 /*=========================================================================*/ 00038 00039 /*========================================================================= 00040 POINTER REGISTER 00041 -----------------------------------------------------------------------*/ 00042 #define ADS1015_REG_POINTER_MASK (0x03) 00043 #define ADS1015_REG_POINTER_CONVERT (0x00) 00044 #define ADS1015_REG_POINTER_CONFIG (0x01) 00045 #define ADS1015_REG_POINTER_LOWTHRESH (0x02) 00046 #define ADS1015_REG_POINTER_HITHRESH (0x03) 00047 /*=========================================================================*/ 00048 00049 /*========================================================================= 00050 CONFIG REGISTER 00051 -----------------------------------------------------------------------*/ 00052 #define ADS1015_REG_CONFIG_OS_MASK (0x8000) 00053 #define ADS1015_REG_CONFIG_OS_SINGLE (0x8000) // Write: Set to start a single-conversion 00054 #define ADS1015_REG_CONFIG_OS_BUSY (0x0000) // Read: Bit = 0 when conversion is in progress 00055 #define ADS1015_REG_CONFIG_OS_NOTBUSY (0x8000) // Read: Bit = 1 when device is not performing a conversion 00056 00057 #define ADS1015_REG_CONFIG_MUX_MASK (0x7000) 00058 #define ADS1015_REG_CONFIG_MUX_DIFF_0_1 (0x0000) // Differential P = AIN0, N = AIN1 (default) 00059 #define ADS1015_REG_CONFIG_MUX_DIFF_0_3 (0x1000) // Differential P = AIN0, N = AIN3 00060 #define ADS1015_REG_CONFIG_MUX_DIFF_1_3 (0x2000) // Differential P = AIN1, N = AIN3 00061 #define ADS1015_REG_CONFIG_MUX_DIFF_2_3 (0x3000) // Differential P = AIN2, N = AIN3 00062 #define ADS1015_REG_CONFIG_MUX_SINGLE_0 (0x4000) // Single-ended AIN0 00063 #define ADS1015_REG_CONFIG_MUX_SINGLE_1 (0x5000) // Single-ended AIN1 00064 #define ADS1015_REG_CONFIG_MUX_SINGLE_2 (0x6000) // Single-ended AIN2 00065 #define ADS1015_REG_CONFIG_MUX_SINGLE_3 (0x7000) // Single-ended AIN3 00066 00067 #define ADS1015_REG_CONFIG_PGA_MASK (0x0E00) 00068 #define ADS1015_REG_CONFIG_PGA_6_144V (0x0000) // +/-6.144V range = Gain 2/3 00069 #define ADS1015_REG_CONFIG_PGA_4_096V (0x0200) // +/-4.096V range = Gain 1 00070 #define ADS1015_REG_CONFIG_PGA_2_048V (0x0400) // +/-2.048V range = Gain 2 (default) 00071 #define ADS1015_REG_CONFIG_PGA_1_024V (0x0600) // +/-1.024V range = Gain 4 00072 #define ADS1015_REG_CONFIG_PGA_0_512V (0x0800) // +/-0.512V range = Gain 8 00073 #define ADS1015_REG_CONFIG_PGA_0_256V (0x0A00) // +/-0.256V range = Gain 16 00074 00075 #define ADS1015_REG_CONFIG_MODE_MASK (0x0100) 00076 #define ADS1015_REG_CONFIG_MODE_CONTIN (0x0000) // Continuous conversion mode 00077 #define ADS1015_REG_CONFIG_MODE_SINGLE (0x0100) // Power-down single-shot mode (default) 00078 00079 #define ADS1015_REG_CONFIG_DR_MASK (0x00E0) 00080 #define ADS1015_REG_CONFIG_DR_128SPS (0x0000) // 128 samples per second - ADS1115 8SPS 00081 #define ADS1015_REG_CONFIG_DR_250SPS (0x0020) // 250 samples per second - ADS1115 16SPS 00082 #define ADS1015_REG_CONFIG_DR_490SPS (0x0040) // 490 samples per second - ADS1115 32SPS 00083 #define ADS1015_REG_CONFIG_DR_920SPS (0x0060) // 920 samples per second - ADS1115 64SPS 00084 #define ADS1015_REG_CONFIG_DR_1600SPS (0x0080) // 1600 samples per second - ADS1115 250SPS (default) 00085 #define ADS1015_REG_CONFIG_DR_2400SPS (0x00A0) // 2400 samples per second - ADS1115 475SPS 00086 #define ADS1015_REG_CONFIG_DR_3300SPS (0x00C0) // 3300 samples per second - ADS1115 860SPS 00087 00088 #define ADS1015_REG_CONFIG_CMODE_MASK (0x0010) 00089 #define ADS1015_REG_CONFIG_CMODE_TRAD (0x0000) // Traditional comparator with hysteresis (default) 00090 #define ADS1015_REG_CONFIG_CMODE_WINDOW (0x0010) // Window comparator 00091 00092 #define ADS1015_REG_CONFIG_CPOL_MASK (0x0008) 00093 #define ADS1015_REG_CONFIG_CPOL_ACTVLOW (0x0000) // ALERT/RDY pin is low when active (default) 00094 #define ADS1015_REG_CONFIG_CPOL_ACTVHI (0x0008) // ALERT/RDY pin is high when active 00095 00096 #define ADS1015_REG_CONFIG_CLAT_MASK (0x0004) // Determines if ALERT/RDY pin latches once asserted 00097 #define ADS1015_REG_CONFIG_CLAT_NONLAT (0x0000) // Non-latching comparator (default) 00098 #define ADS1015_REG_CONFIG_CLAT_LATCH (0x0004) // Latching comparator 00099 00100 #define ADS1015_REG_CONFIG_CQUE_MASK (0x0003) 00101 #define ADS1015_REG_CONFIG_CQUE_1CONV (0x0000) // Assert ALERT/RDY after one conversions 00102 #define ADS1015_REG_CONFIG_CQUE_2CONV (0x0001) // Assert ALERT/RDY after two conversions 00103 #define ADS1015_REG_CONFIG_CQUE_4CONV (0x0002) // Assert ALERT/RDY after four conversions 00104 #define ADS1015_REG_CONFIG_CQUE_NONE (0x0003) // Disable the comparator and put ALERT/RDY in high state (default) 00105 /*=========================================================================*/ 00106 00107 typedef enum { 00108 GAIN_TWOTHIRDS = ADS1015_REG_CONFIG_PGA_6_144V, 00109 GAIN_ONE = ADS1015_REG_CONFIG_PGA_4_096V, 00110 GAIN_TWO = ADS1015_REG_CONFIG_PGA_2_048V, 00111 GAIN_FOUR = ADS1015_REG_CONFIG_PGA_1_024V, 00112 GAIN_EIGHT = ADS1015_REG_CONFIG_PGA_0_512V, 00113 GAIN_SIXTEEN = ADS1015_REG_CONFIG_PGA_0_256V 00114 } adsGain_t; 00115 00116 class Adafruit_ADS1015 00117 { 00118 protected: 00119 // Instance-specific properties 00120 uint8_t m_i2cAddress; 00121 uint8_t m_conversionDelay; 00122 uint8_t m_bitShift; 00123 adsGain_t m_gain; 00124 I2C* m_i2c; 00125 00126 00127 public: 00128 Adafruit_ADS1015(I2C* i2c = 0, uint8_t i2cAddress = ADS1015_ADDRESS); // set i2c adress = 0 to allow ADS1115 to use this as default constructor 00129 uint16_t readADC_SingleEnded(uint8_t channel); 00130 int16_t readADC_Differential_0_1(void); 00131 int16_t readADC_Differential_2_3(void); 00132 void startComparator_SingleEnded(uint8_t channel, int16_t threshold); 00133 int16_t getLastConversionResults(); 00134 void setGain(adsGain_t gain); 00135 adsGain_t getGain(void); 00136 00137 private: 00138 uint16_t readRegister(uint8_t i2cAddress, uint8_t reg); 00139 void writeRegister(uint8_t i2cAddress, uint8_t reg, uint16_t value); 00140 }; 00141 00142 // Derive from ADS1105 & override construction to set properties 00143 class Adafruit_ADS1115 : public Adafruit_ADS1015 00144 { 00145 public: 00146 Adafruit_ADS1115(I2C* i2c, uint8_t i2cAddress = ADS1015_ADDRESS); 00147 00148 private: 00149 };
Generated on Tue Jul 12 2022 18:47:52 by
1.7.2
