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
Diff: TCS3472_I2C.h
- Revision:
- 6:6d5bb4ad7d6e
- Parent:
- 5:d4cf0fa1a182
- Child:
- 7:fbc4c6f3be5b
diff -r d4cf0fa1a182 -r 6d5bb4ad7d6e TCS3472_I2C.h --- a/TCS3472_I2C.h Wed Apr 16 10:57:46 2014 +0000 +++ b/TCS3472_I2C.h Thu Apr 24 09:14:25 2014 +0000 @@ -20,47 +20,319 @@ #define GDATA 0x18 #define BDATA 0x1A +/** TCS3472_I2C class. + * Used to read to and write from TCS3472 color sensor. + * + * Example: + * @code + * #include "mbed.h" + * #include "TCS3472_I2C.h" + * + * TCS3472_I2C rgb_sensor( p9, p10 ); + * + * int main() { + * rgb_sensor.enablePowerAndRGBC(); + * rgb_sensor.setIntegrationTime( 100 ); + * + * int rgb_readings[4]; + * while(1) { + * rgb_sensor.getAllColors( rgb_readings ); + * printf( "red: %d, green: %d, blue: %d, clear: %d", rgb_readings[0], rgb_readings[1], rgb_readings[2], rgb_readings[3] ); + * wait_ms( 100 ); + * } + * } + * @endcode + */ class TCS3472_I2C { public: + /** Create TCS3472_I2C instance + * + * @param sda sda pin for I2C + * @param scl scl pin for I2C + */ TCS3472_I2C( PinName sda, PinName scl ); - int getAllColours( int* readings ); + /** Destructor + */ + ~TCS3472_I2C(); + + /** Read red, green, blue and clear values into array + * + * @param readings Array of four integers to store the read data + */ + void getAllColors( int* readings ); + + /** Read clear data + * + * @returns + * Clear data reading + */ int getClearData(); + + /** Read red data + * + * @returns + * Red data reading + */ int getRedData(); + + /** Read green data + * + * @returns + * Green data reading + */ int getGreenData(); + + /** Read blue data + * + * @returns + * Blue data reading + */ int getBlueData(); - + + /** Power ON. Activates the internal oscillator to permit the timers and ADC channels to operate. + * + * @returns + * 1 if successful + * 0 if otherwise + */ int enablePower(); + + /** Power OFF. Disables the internal oscillator. + * + * @returns + * 1 if successful + * 0 if otherwise + */ int disablePower(); + + /** Checks if power is on (i.e. internal oscillator enabled) + * + * @returns + * 1 if power ON. + * 0 if power OFF. + */ bool isPowerEnabled(); + + /** Activates the two-channel ADC. + * + * @returns + * 1 if successful + * 0 if otherwise + */ int enableRGBC(); + + /** Disables the two-channel ADC. + * + * @returns + * 1 if successful + * 0 if otherwise + */ int disableRGBC(); + + /** Checks if the two-channel ADC is enabled or not. + * + * @returns + * 1 if ADC enabled. + * 0 if ADC not enabled. + */ bool isRGBCEnabled(); + + /** Activates internal oscillator and two-channel ADC simultaneously (both necessary for standard operation). + * + * @returns + * 1 if successful + * 0 if otherwise + */ int enablePowerAndRGBC(); + + /** Disables internal oscillator and two-channel ADC simultaneously. + * + * @returns + * 1 if successful + * 0 if otherwise + */ int disablePowerAndRGBC(); + + /** Activates the wait feature. + * + * @returns + * 1 if successful + * 0 if otherwise + */ int enableWait(); + + /** Disables the wait feature. + * + * @returns + * 1 if successful + * 0 if otherwise + */ int disableWait(); + + /** Checks if wait is enabled + * + * @returns + * 1 if enabled. + * 0 if not enabled. + */ bool isWaitEnabled(); + + /** Permits RGBC interrupts to be generated. + * + * @returns + * 1 if successful + * 0 if otherwise + */ int enableInterrupt(); + + /** Forbids RGBC interrupts to be generated. + * + * @returns + * 1 if successful + * 0 if otherwise + */ int disableInterrupt(); + + /** Checks if RGBC interrupt is enabled. + * + * @returns + * 1 if enabled. + * 0 if not enabled. + */ bool isInterruptEnabled(); - int setWaitTime( const float wtime ); // wtime (in ms) should be in the range 2.4 - 7400ms. + /** Sets wait time. + * + * @param wtime Wait time to set in milliseconds. Should be in the range 2.4 - 7400ms. + * + * @returns + * 1 if successful + * 0 if otherwise + */ + int setWaitTime( const float wtime ); + + /** Reads the current wait time. + * + * @returns + * Wait time in milliseconds + */ float readWaitTime(); - int setIntegrationTime( const float itime ); // itime (in ms) should be in the range 2.4 - 614.4ms. + + /** Sets integration time. + * + * @param itime Integration time to set in milliseconds. Should be in the range 2.4 - 614.4ms. + * + * @returns + * 1 if successful + * 0 if otherwise + */ + int setIntegrationTime( const float itime ); + + /** Reads the current integration time. + * + * @returns + * Integration time in milliseconds + */ float readIntegrationTime(); + /** Reads the enable register byte as a char. + * + * @returns + * Enable register byte + */ char readEnableRegister(); + + /** Reads the low trigger point for the comparison function for interrupt generation. + * + * @returns + * Low threshold value + */ int readLowInterruptThreshold(); + + /** Reads the high trigger point for the comparison function for interrupt generation. + * + * @returns + * High threshold value + */ int readHighInterruptThreshold(); + + /** Sets the low trigger point for the comparison function for interrupt generation. + * + * @param threshold Low threshold value + * + * @returns + * 1 if successful + * 0 if otherwise + */ int setLowInterruptThreshold( const int threshold ); + + /** Sets the high trigger point for the comparison function for interrupt generation. + * + * @param threshold High threshold value + * + * @returns + * 1 if successful + * 0 if otherwise + */ int setHighInterruptThreshold( const int threshold ); + + /** Returns the number of consecutive values out of range (set by the low and high thresholds) required to trigger an interrupt + * + * @returns + * interrput persistence + */ int readInterruptPersistence(); - int setInterruptPersistence( const int persistence ); // persistence must be 0, 1, 2, 3, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55 or 60 - int clearInterrupt(); // writes 0b11100110 to command register to clear interrupt + + /** Sets the number of consecutive values out of range (set by the low and high thresholds) required to trigger an interrupt + * + * @param persistence Value to set. Must be 0, 1, 2, 3, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55 or 60. + * + * @returns + * 1 if successful + * 0 if otherwise + */ + int setInterruptPersistence( const int persistence ); + + /** Clears the interrupt bit, allowing normal operation to resume. + * (writes 0b11100110 to the command register to clear interrupt) + * + * @returns + * 1 if successful + * 0 if otherwise + */ + int clearInterrupt(); + + /** Read RGBC gain. + * + * @returns + * RGBC gain + */ int readRGBCGain(); - int setRGBCGain( const int gain ); // gain must be 1, 4, 16 or 60 + + /** Sets RGBC gain + * + * @param gain Gain to set. Must be 1, 4, 16 or 60. + * + * @returns + * 1 if successful + * 0 if otherwise + */ + int setRGBCGain( const int gain ); + + /** Returns Device ID. + * + * @returns + * 0x44 = TCS34721 and TCS34725 + * 0x4D = TCS34723 and TCS34727 + */ char getDeviceID(); + + /** Reads the status register byte as a char. + * + * @returns + * Status register byte + */ char readStatusRegister(); private: