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
TCS3472_I2C.h@4:5d1f8d7d81ff, 2014-03-21 (annotated)
- Committer:
- karlmaxwell67
- Date:
- Fri Mar 21 17:38:11 2014 +0000
- Revision:
- 4:5d1f8d7d81ff
- Parent:
- 3:6a89ac4a1979
- Child:
- 5:d4cf0fa1a182
Added isPowerEnabled, isRGBCEnabled etc. and roundTowardsZero which is used in setWaitTime and setIntegrationTime
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 |
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 | 0:453a43c8bf2b | 23 | class TCS3472_I2C { |
karlmaxwell67 | 0:453a43c8bf2b | 24 | public: |
karlmaxwell67 | 0:453a43c8bf2b | 25 | TCS3472_I2C( PinName sda, PinName scl ); |
karlmaxwell67 | 1:70d7d9f1af01 | 26 | |
karlmaxwell67 | 1:70d7d9f1af01 | 27 | int getAllColours( int* readings ); |
karlmaxwell67 | 1:70d7d9f1af01 | 28 | int getClearData(); |
karlmaxwell67 | 1:70d7d9f1af01 | 29 | int getRedData(); |
karlmaxwell67 | 1:70d7d9f1af01 | 30 | int getGreenData(); |
karlmaxwell67 | 1:70d7d9f1af01 | 31 | int getBlueData(); |
karlmaxwell67 | 3:6a89ac4a1979 | 32 | |
karlmaxwell67 | 3:6a89ac4a1979 | 33 | int enablePower(); |
karlmaxwell67 | 3:6a89ac4a1979 | 34 | int disablePower(); |
karlmaxwell67 | 4:5d1f8d7d81ff | 35 | bool isPowerEnabled(); |
karlmaxwell67 | 3:6a89ac4a1979 | 36 | int enableRGBC(); |
karlmaxwell67 | 3:6a89ac4a1979 | 37 | int disableRGBC(); |
karlmaxwell67 | 4:5d1f8d7d81ff | 38 | bool isRGBCEnabled(); |
karlmaxwell67 | 3:6a89ac4a1979 | 39 | int enablePowerAndRGBC(); |
karlmaxwell67 | 3:6a89ac4a1979 | 40 | int disablePowerAndRGBC(); |
karlmaxwell67 | 2:38d5187a4e7b | 41 | int enableWait(); |
karlmaxwell67 | 2:38d5187a4e7b | 42 | int disableWait(); |
karlmaxwell67 | 4:5d1f8d7d81ff | 43 | bool isWaitEnabled(); |
karlmaxwell67 | 2:38d5187a4e7b | 44 | int enableInterrupt(); |
karlmaxwell67 | 2:38d5187a4e7b | 45 | int disableInterrupt(); |
karlmaxwell67 | 4:5d1f8d7d81ff | 46 | bool isInterruptEnabled(); |
karlmaxwell67 | 4:5d1f8d7d81ff | 47 | |
karlmaxwell67 | 2:38d5187a4e7b | 48 | int setWaitTime( const float wtime ); // wtime (in ms) should be in the range 2.4 - 7400ms. |
karlmaxwell67 | 4:5d1f8d7d81ff | 49 | float readWaitTime(); |
karlmaxwell67 | 3:6a89ac4a1979 | 50 | int setIntegrationTime( const float itime ); // itime (in ms) should be in the range 2.4 - 614.4ms. |
karlmaxwell67 | 4:5d1f8d7d81ff | 51 | float readIntegrationTime(); |
karlmaxwell67 | 3:6a89ac4a1979 | 52 | |
karlmaxwell67 | 3:6a89ac4a1979 | 53 | char readEnableRegister(); |
karlmaxwell67 | 3:6a89ac4a1979 | 54 | int readLowInterruptThreshold(); |
karlmaxwell67 | 3:6a89ac4a1979 | 55 | int readHighInterruptThreshold(); |
karlmaxwell67 | 3:6a89ac4a1979 | 56 | int setLowInterruptThreshold( const int threshold ); |
karlmaxwell67 | 3:6a89ac4a1979 | 57 | int setHighInterruptThreshold( const int threshold ); |
karlmaxwell67 | 3:6a89ac4a1979 | 58 | int readInterruptPersistence(); |
karlmaxwell67 | 3:6a89ac4a1979 | 59 | 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 |
karlmaxwell67 | 3:6a89ac4a1979 | 60 | int clearInterrupt(); |
karlmaxwell67 | 3:6a89ac4a1979 | 61 | int readRGBCGain(); |
karlmaxwell67 | 3:6a89ac4a1979 | 62 | int setRGBCGain( const int gain ); // gain must be 1, 4, 16 or 60 |
karlmaxwell67 | 3:6a89ac4a1979 | 63 | char getDeviceID(); |
karlmaxwell67 | 3:6a89ac4a1979 | 64 | char readStatusRegister(); |
karlmaxwell67 | 0:453a43c8bf2b | 65 | |
karlmaxwell67 | 0:453a43c8bf2b | 66 | private: |
karlmaxwell67 | 3:6a89ac4a1979 | 67 | I2C i2c; |
karlmaxwell67 | 1:70d7d9f1af01 | 68 | |
karlmaxwell67 | 1:70d7d9f1af01 | 69 | int writeSingleRegister( char address, char data ); |
karlmaxwell67 | 3:6a89ac4a1979 | 70 | int writeMultipleRegisters( char address, char* data, int quantity ); |
karlmaxwell67 | 1:70d7d9f1af01 | 71 | char readSingleRegister( char address ); |
karlmaxwell67 | 1:70d7d9f1af01 | 72 | int readMultipleRegisters( char address, char* output, int quantity ); |
karlmaxwell67 | 4:5d1f8d7d81ff | 73 | |
karlmaxwell67 | 4:5d1f8d7d81ff | 74 | float roundTowardsZero( const float value ); |
karlmaxwell67 | 0:453a43c8bf2b | 75 | }; |
karlmaxwell67 | 0:453a43c8bf2b | 76 | |
karlmaxwell67 | 1:70d7d9f1af01 | 77 | #endif |