Class which provides functions to control a TAOS TCS3472 Color Light-to-Digital Converter with IR Filter via I2C. (Tidied up)
Dependents: openwear-lifelogger-example
Fork of TCS3472_I2C by
TCS3472_I2C.h@8:2a240f6ca27a, 2014-09-08 (annotated)
- Committer:
- janekm
- Date:
- Mon Sep 08 23:16:40 2014 +0000
- Revision:
- 8:2a240f6ca27a
- Parent:
- 7:fbc4c6f3be5b
N/A
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
karlmaxwell67 | 0:453a43c8bf2b | 1 | #ifndef TCS3472_I2C_H |
karlmaxwell67 | 0:453a43c8bf2b | 2 | #define TCS3472_I2C_H |
karlmaxwell67 | 0:453a43c8bf2b | 3 | #include "mbed.h" |
karlmaxwell67 | 0:453a43c8bf2b | 4 | |
karlmaxwell67 | 1:70d7d9f1af01 | 5 | //Defines |
karlmaxwell67 | 1:70d7d9f1af01 | 6 | #define SLAVE_ADDRESS 0x29 |
karlmaxwell67 | 2:38d5187a4e7b | 7 | |
karlmaxwell67 | 3:6a89ac4a1979 | 8 | #define ENABLE 0x00 |
karlmaxwell67 | 2:38d5187a4e7b | 9 | #define ATIME 0x01 |
karlmaxwell67 | 2:38d5187a4e7b | 10 | #define WTIME 0x03 |
karlmaxwell67 | 3:6a89ac4a1979 | 11 | #define AILTL 0x04 |
karlmaxwell67 | 3:6a89ac4a1979 | 12 | #define AIHTL 0x06 |
karlmaxwell67 | 3:6a89ac4a1979 | 13 | #define PERS 0x0C |
janekm | 8:2a240f6ca27a | 14 | #define TCS_CONFIG 0x0D |
karlmaxwell67 | 3:6a89ac4a1979 | 15 | #define CONTROL 0x0F |
karlmaxwell67 | 3:6a89ac4a1979 | 16 | #define ID 0x12 |
karlmaxwell67 | 3:6a89ac4a1979 | 17 | #define STATUS 0x13 |
karlmaxwell67 | 1:70d7d9f1af01 | 18 | #define CDATA 0x14 |
karlmaxwell67 | 1:70d7d9f1af01 | 19 | #define RDATA 0x16 |
karlmaxwell67 | 1:70d7d9f1af01 | 20 | #define GDATA 0x18 |
karlmaxwell67 | 1:70d7d9f1af01 | 21 | #define BDATA 0x1A |
karlmaxwell67 | 1:70d7d9f1af01 | 22 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 23 | /** TCS3472_I2C class. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 24 | * Used to read to and write from TCS3472 color sensor. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 25 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 26 | * Example: |
karlmaxwell67 | 6:6d5bb4ad7d6e | 27 | * @code |
karlmaxwell67 | 6:6d5bb4ad7d6e | 28 | * #include "mbed.h" |
karlmaxwell67 | 6:6d5bb4ad7d6e | 29 | * #include "TCS3472_I2C.h" |
karlmaxwell67 | 6:6d5bb4ad7d6e | 30 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 31 | * TCS3472_I2C rgb_sensor( p9, p10 ); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 32 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 33 | * int main() { |
karlmaxwell67 | 6:6d5bb4ad7d6e | 34 | * rgb_sensor.enablePowerAndRGBC(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 35 | * rgb_sensor.setIntegrationTime( 100 ); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 36 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 37 | * int rgb_readings[4]; |
karlmaxwell67 | 6:6d5bb4ad7d6e | 38 | * while(1) { |
karlmaxwell67 | 6:6d5bb4ad7d6e | 39 | * rgb_sensor.getAllColors( rgb_readings ); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 40 | * printf( "red: %d, green: %d, blue: %d, clear: %d", rgb_readings[0], rgb_readings[1], rgb_readings[2], rgb_readings[3] ); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 41 | * wait_ms( 100 ); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 42 | * } |
karlmaxwell67 | 6:6d5bb4ad7d6e | 43 | * } |
karlmaxwell67 | 6:6d5bb4ad7d6e | 44 | * @endcode |
karlmaxwell67 | 6:6d5bb4ad7d6e | 45 | */ |
karlmaxwell67 | 0:453a43c8bf2b | 46 | class TCS3472_I2C { |
karlmaxwell67 | 0:453a43c8bf2b | 47 | public: |
karlmaxwell67 | 6:6d5bb4ad7d6e | 48 | /** Create TCS3472_I2C instance |
karlmaxwell67 | 6:6d5bb4ad7d6e | 49 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 50 | * @param sda sda pin for I2C |
karlmaxwell67 | 6:6d5bb4ad7d6e | 51 | * @param scl scl pin for I2C |
karlmaxwell67 | 6:6d5bb4ad7d6e | 52 | */ |
janekm | 7:fbc4c6f3be5b | 53 | TCS3472_I2C( I2C *i2c, uint8_t deviceAddress = SLAVE_ADDRESS ); |
karlmaxwell67 | 1:70d7d9f1af01 | 54 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 55 | /** Destructor |
karlmaxwell67 | 6:6d5bb4ad7d6e | 56 | */ |
karlmaxwell67 | 6:6d5bb4ad7d6e | 57 | ~TCS3472_I2C(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 58 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 59 | /** Read red, green, blue and clear values into array |
karlmaxwell67 | 6:6d5bb4ad7d6e | 60 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 61 | * @param readings Array of four integers to store the read data |
karlmaxwell67 | 6:6d5bb4ad7d6e | 62 | */ |
karlmaxwell67 | 6:6d5bb4ad7d6e | 63 | void getAllColors( int* readings ); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 64 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 65 | /** Read clear data |
karlmaxwell67 | 6:6d5bb4ad7d6e | 66 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 67 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 68 | * Clear data reading |
karlmaxwell67 | 6:6d5bb4ad7d6e | 69 | */ |
karlmaxwell67 | 1:70d7d9f1af01 | 70 | int getClearData(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 71 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 72 | /** Read red data |
karlmaxwell67 | 6:6d5bb4ad7d6e | 73 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 74 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 75 | * Red data reading |
karlmaxwell67 | 6:6d5bb4ad7d6e | 76 | */ |
karlmaxwell67 | 1:70d7d9f1af01 | 77 | int getRedData(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 78 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 79 | /** Read green data |
karlmaxwell67 | 6:6d5bb4ad7d6e | 80 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 81 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 82 | * Green data reading |
karlmaxwell67 | 6:6d5bb4ad7d6e | 83 | */ |
karlmaxwell67 | 1:70d7d9f1af01 | 84 | int getGreenData(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 85 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 86 | /** Read blue data |
karlmaxwell67 | 6:6d5bb4ad7d6e | 87 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 88 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 89 | * Blue data reading |
karlmaxwell67 | 6:6d5bb4ad7d6e | 90 | */ |
karlmaxwell67 | 1:70d7d9f1af01 | 91 | int getBlueData(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 92 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 93 | /** Power ON. Activates the internal oscillator to permit the timers and ADC channels to operate. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 94 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 95 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 96 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 97 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 98 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 99 | int enablePower(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 100 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 101 | /** Power OFF. Disables the internal oscillator. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 102 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 103 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 104 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 105 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 106 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 107 | int disablePower(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 108 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 109 | /** Checks if power is on (i.e. internal oscillator enabled) |
karlmaxwell67 | 6:6d5bb4ad7d6e | 110 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 111 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 112 | * 1 if power ON. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 113 | * 0 if power OFF. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 114 | */ |
karlmaxwell67 | 4:5d1f8d7d81ff | 115 | bool isPowerEnabled(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 116 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 117 | /** Activates the two-channel ADC. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 118 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 119 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 120 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 121 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 122 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 123 | int enableRGBC(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 124 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 125 | /** Disables the two-channel ADC. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 126 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 127 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 128 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 129 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 130 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 131 | int disableRGBC(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 132 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 133 | /** Checks if the two-channel ADC is enabled or not. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 134 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 135 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 136 | * 1 if ADC enabled. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 137 | * 0 if ADC not enabled. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 138 | */ |
karlmaxwell67 | 4:5d1f8d7d81ff | 139 | bool isRGBCEnabled(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 140 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 141 | /** Activates internal oscillator and two-channel ADC simultaneously (both necessary for standard operation). |
karlmaxwell67 | 6:6d5bb4ad7d6e | 142 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 143 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 144 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 145 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 146 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 147 | int enablePowerAndRGBC(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 148 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 149 | /** Disables internal oscillator and two-channel ADC simultaneously. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 150 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 151 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 152 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 153 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 154 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 155 | int disablePowerAndRGBC(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 156 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 157 | /** Activates the wait feature. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 158 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 159 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 160 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 161 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 162 | */ |
karlmaxwell67 | 2:38d5187a4e7b | 163 | int enableWait(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 164 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 165 | /** Disables the wait feature. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 166 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 167 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 168 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 169 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 170 | */ |
karlmaxwell67 | 2:38d5187a4e7b | 171 | int disableWait(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 172 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 173 | /** Checks if wait is enabled |
karlmaxwell67 | 6:6d5bb4ad7d6e | 174 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 175 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 176 | * 1 if enabled. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 177 | * 0 if not enabled. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 178 | */ |
karlmaxwell67 | 4:5d1f8d7d81ff | 179 | bool isWaitEnabled(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 180 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 181 | /** Permits RGBC interrupts to be generated. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 182 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 183 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 184 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 185 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 186 | */ |
karlmaxwell67 | 2:38d5187a4e7b | 187 | int enableInterrupt(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 188 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 189 | /** Forbids RGBC interrupts to be generated. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 190 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 191 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 192 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 193 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 194 | */ |
karlmaxwell67 | 2:38d5187a4e7b | 195 | int disableInterrupt(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 196 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 197 | /** Checks if RGBC interrupt is enabled. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 198 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 199 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 200 | * 1 if enabled. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 201 | * 0 if not enabled. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 202 | */ |
karlmaxwell67 | 4:5d1f8d7d81ff | 203 | bool isInterruptEnabled(); |
karlmaxwell67 | 4:5d1f8d7d81ff | 204 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 205 | /** Sets wait time. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 206 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 207 | * @param wtime Wait time to set in milliseconds. Should be in the range 2.4 - 7400ms. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 208 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 209 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 210 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 211 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 212 | */ |
karlmaxwell67 | 6:6d5bb4ad7d6e | 213 | int setWaitTime( const float wtime ); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 214 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 215 | /** Reads the current wait time. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 216 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 217 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 218 | * Wait time in milliseconds |
karlmaxwell67 | 6:6d5bb4ad7d6e | 219 | */ |
karlmaxwell67 | 4:5d1f8d7d81ff | 220 | float readWaitTime(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 221 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 222 | /** Sets integration time. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 223 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 224 | * @param itime Integration time to set in milliseconds. Should be in the range 2.4 - 614.4ms. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 225 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 226 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 227 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 228 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 229 | */ |
karlmaxwell67 | 6:6d5bb4ad7d6e | 230 | int setIntegrationTime( const float itime ); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 231 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 232 | /** Reads the current integration time. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 233 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 234 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 235 | * Integration time in milliseconds |
karlmaxwell67 | 6:6d5bb4ad7d6e | 236 | */ |
karlmaxwell67 | 4:5d1f8d7d81ff | 237 | float readIntegrationTime(); |
karlmaxwell67 | 3:6a89ac4a1979 | 238 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 239 | /** Reads the enable register byte as a char. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 240 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 241 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 242 | * Enable register byte |
karlmaxwell67 | 6:6d5bb4ad7d6e | 243 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 244 | char readEnableRegister(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 245 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 246 | /** Reads the low trigger point for the comparison function for interrupt generation. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 247 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 248 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 249 | * Low threshold value |
karlmaxwell67 | 6:6d5bb4ad7d6e | 250 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 251 | int readLowInterruptThreshold(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 252 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 253 | /** Reads the high trigger point for the comparison function for interrupt generation. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 254 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 255 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 256 | * High threshold value |
karlmaxwell67 | 6:6d5bb4ad7d6e | 257 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 258 | int readHighInterruptThreshold(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 259 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 260 | /** Sets the low trigger point for the comparison function for interrupt generation. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 261 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 262 | * @param threshold Low threshold value |
karlmaxwell67 | 6:6d5bb4ad7d6e | 263 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 264 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 265 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 266 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 267 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 268 | int setLowInterruptThreshold( const int threshold ); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 269 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 270 | /** Sets the high trigger point for the comparison function for interrupt generation. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 271 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 272 | * @param threshold High threshold value |
karlmaxwell67 | 6:6d5bb4ad7d6e | 273 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 274 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 275 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 276 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 277 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 278 | int setHighInterruptThreshold( const int threshold ); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 279 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 280 | /** Returns the number of consecutive values out of range (set by the low and high thresholds) required to trigger an interrupt |
karlmaxwell67 | 6:6d5bb4ad7d6e | 281 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 282 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 283 | * interrput persistence |
karlmaxwell67 | 6:6d5bb4ad7d6e | 284 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 285 | int readInterruptPersistence(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 286 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 287 | /** Sets the number of consecutive values out of range (set by the low and high thresholds) required to trigger an interrupt |
karlmaxwell67 | 6:6d5bb4ad7d6e | 288 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 289 | * @param persistence Value to set. Must be 0, 1, 2, 3, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55 or 60. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 290 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 291 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 292 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 293 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 294 | */ |
karlmaxwell67 | 6:6d5bb4ad7d6e | 295 | int setInterruptPersistence( const int persistence ); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 296 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 297 | /** Clears the interrupt bit, allowing normal operation to resume. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 298 | * (writes 0b11100110 to the command register to clear interrupt) |
karlmaxwell67 | 6:6d5bb4ad7d6e | 299 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 300 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 301 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 302 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 303 | */ |
karlmaxwell67 | 6:6d5bb4ad7d6e | 304 | int clearInterrupt(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 305 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 306 | /** Read RGBC gain. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 307 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 308 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 309 | * RGBC gain |
karlmaxwell67 | 6:6d5bb4ad7d6e | 310 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 311 | int readRGBCGain(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 312 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 313 | /** Sets RGBC gain |
karlmaxwell67 | 6:6d5bb4ad7d6e | 314 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 315 | * @param gain Gain to set. Must be 1, 4, 16 or 60. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 316 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 317 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 318 | * 1 if successful |
karlmaxwell67 | 6:6d5bb4ad7d6e | 319 | * 0 if otherwise |
karlmaxwell67 | 6:6d5bb4ad7d6e | 320 | */ |
karlmaxwell67 | 6:6d5bb4ad7d6e | 321 | int setRGBCGain( const int gain ); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 322 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 323 | /** Returns Device ID. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 324 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 325 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 326 | * 0x44 = TCS34721 and TCS34725 |
karlmaxwell67 | 6:6d5bb4ad7d6e | 327 | * 0x4D = TCS34723 and TCS34727 |
karlmaxwell67 | 6:6d5bb4ad7d6e | 328 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 329 | char getDeviceID(); |
karlmaxwell67 | 6:6d5bb4ad7d6e | 330 | |
karlmaxwell67 | 6:6d5bb4ad7d6e | 331 | /** Reads the status register byte as a char. |
karlmaxwell67 | 6:6d5bb4ad7d6e | 332 | * |
karlmaxwell67 | 6:6d5bb4ad7d6e | 333 | * @returns |
karlmaxwell67 | 6:6d5bb4ad7d6e | 334 | * Status register byte |
karlmaxwell67 | 6:6d5bb4ad7d6e | 335 | */ |
karlmaxwell67 | 3:6a89ac4a1979 | 336 | char readStatusRegister(); |
karlmaxwell67 | 0:453a43c8bf2b | 337 | |
karlmaxwell67 | 0:453a43c8bf2b | 338 | private: |
janekm | 7:fbc4c6f3be5b | 339 | I2C *_i2c; |
janekm | 7:fbc4c6f3be5b | 340 | uint8_t _slaveAddress; |
karlmaxwell67 | 1:70d7d9f1af01 | 341 | |
karlmaxwell67 | 1:70d7d9f1af01 | 342 | int writeSingleRegister( char address, char data ); |
karlmaxwell67 | 3:6a89ac4a1979 | 343 | int writeMultipleRegisters( char address, char* data, int quantity ); |
karlmaxwell67 | 1:70d7d9f1af01 | 344 | char readSingleRegister( char address ); |
karlmaxwell67 | 1:70d7d9f1af01 | 345 | int readMultipleRegisters( char address, char* output, int quantity ); |
karlmaxwell67 | 4:5d1f8d7d81ff | 346 | |
karlmaxwell67 | 4:5d1f8d7d81ff | 347 | float roundTowardsZero( const float value ); |
karlmaxwell67 | 0:453a43c8bf2b | 348 | }; |
karlmaxwell67 | 0:453a43c8bf2b | 349 | |
karlmaxwell67 | 1:70d7d9f1af01 | 350 | #endif |