Class which provides functions to control a TAOS TCS3472 Color Light-to-Digital Converter with IR Filter via I2C.

Dependents:   Chipin_Main Test_Color LAB_10_control FINAL_PROJECT ... more

Committer:
karlmaxwell67
Date:
Thu Apr 24 09:14:25 2014 +0000
Revision:
6:6d5bb4ad7d6e
Parent:
5:d4cf0fa1a182
Class documentation added.

Who changed what in which revision?

UserRevisionLine numberNew 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
karlmaxwell67 3:6a89ac4a1979 14 #define 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 */
karlmaxwell67 0:453a43c8bf2b 53 TCS3472_I2C( PinName sda, PinName scl );
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:
karlmaxwell67 3:6a89ac4a1979 339 I2C i2c;
karlmaxwell67 1:70d7d9f1af01 340
karlmaxwell67 1:70d7d9f1af01 341 int writeSingleRegister( char address, char data );
karlmaxwell67 3:6a89ac4a1979 342 int writeMultipleRegisters( char address, char* data, int quantity );
karlmaxwell67 1:70d7d9f1af01 343 char readSingleRegister( char address );
karlmaxwell67 1:70d7d9f1af01 344 int readMultipleRegisters( char address, char* output, int quantity );
karlmaxwell67 4:5d1f8d7d81ff 345
karlmaxwell67 4:5d1f8d7d81ff 346 float roundTowardsZero( const float value );
karlmaxwell67 0:453a43c8bf2b 347 };
karlmaxwell67 0:453a43c8bf2b 348
karlmaxwell67 1:70d7d9f1af01 349 #endif