Vishay VEML6040 Color RGB sensor I2C driver library

Dependents:   test_VEML6040 testSensor

Committer:
Rhyme
Date:
Mon Nov 06 01:18:56 2017 +0000
Revision:
5:a4dcc19d057e
Parent:
4:f5b142e3fe79
get and set Integration Time (IT) were added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shockey 0:e6e6107c659e 1 /*
shockey 0:e6e6107c659e 2 * File description
shockey 0:e6e6107c659e 3 *
shockey 0:e6e6107c659e 4 */
shockey 0:e6e6107c659e 5
shockey 0:e6e6107c659e 6 #ifndef _VEML6040_H_
shockey 0:e6e6107c659e 7 #define _VEML6040_H_
shockey 0:e6e6107c659e 8
shockey 0:e6e6107c659e 9 #include "mbed.h"
shockey 0:e6e6107c659e 10
shockey 0:e6e6107c659e 11 /**
shockey 0:e6e6107c659e 12 * RGBW Color Sensor with I2C Interface
shockey 0:e6e6107c659e 13 * I2C 7bit address: 0x10
shockey 0:e6e6107c659e 14 *
shockey 0:e6e6107c659e 15 */
shockey 0:e6e6107c659e 16
shockey 0:e6e6107c659e 17 class VEML6040
shockey 0:e6e6107c659e 18 {
shockey 0:e6e6107c659e 19 public:
shockey 0:e6e6107c659e 20 /**
shockey 0:e6e6107c659e 21 * constructor
shockey 0:e6e6107c659e 22 *
shockey 0:e6e6107c659e 23 * @param sda SDA pin
shockey 0:e6e6107c659e 24 * @param scl SCL pin
shockey 0:e6e6107c659e 25 * @param addr address of the I2C peripheral
shockey 0:e6e6107c659e 26 */
shockey 0:e6e6107c659e 27 VEML6040(PinName sda, PinName scl, int addr) ;
shockey 0:e6e6107c659e 28
shockey 0:e6e6107c659e 29 ~VEML6040() ;
shockey 0:e6e6107c659e 30
shockey 0:e6e6107c659e 31 /*
shockey 0:e6e6107c659e 32 * some member functions here (yet to be written)
shockey 0:e6e6107c659e 33 */
Rhyme 3:c6614597c135 34 /**
Rhyme 3:c6614597c135 35 * get Red
Rhyme 3:c6614597c135 36 * @param none
Rhyme 3:c6614597c135 37 * @returns float value of Red
Rhyme 3:c6614597c135 38 */
shockey 0:e6e6107c659e 39 float getR(void) ; // return float value of Red
Rhyme 3:c6614597c135 40
Rhyme 3:c6614597c135 41 /**
Rhyme 3:c6614597c135 42 * get Green
Rhyme 3:c6614597c135 43 * @param none
Rhyme 3:c6614597c135 44 * @returns float value of Green
Rhyme 3:c6614597c135 45 */
shockey 0:e6e6107c659e 46 float getG(void) ; // return float value of Green
Rhyme 3:c6614597c135 47
Rhyme 3:c6614597c135 48 /**
Rhyme 3:c6614597c135 49 * get Blue
Rhyme 3:c6614597c135 50 * @param none
Rhyme 3:c6614597c135 51 * @returns float value of Blue
Rhyme 3:c6614597c135 52 */
shockey 0:e6e6107c659e 53 float getB(void) ; // return float value of Blue
Rhyme 3:c6614597c135 54
Rhyme 3:c6614597c135 55 /**
Rhyme 3:c6614597c135 56 * get White
Rhyme 3:c6614597c135 57 * @param none
Rhyme 3:c6614597c135 58 * @returns float value of White
Rhyme 3:c6614597c135 59 */
shockey 0:e6e6107c659e 60 float getW(void) ; // return float value of White
Rhyme 3:c6614597c135 61
Rhyme 3:c6614597c135 62 /**
Rhyme 3:c6614597c135 63 * get CCT(McCAMY FORMULA) value X
Rhyme 3:c6614597c135 64 * @param none
Rhyme 3:c6614597c135 65 * @returns float CCT value X
Rhyme 3:c6614597c135 66 */
shockey 1:5540b216acfc 67 float getX(void) ; // return float value of X
Rhyme 3:c6614597c135 68
Rhyme 3:c6614597c135 69 /**
Rhyme 3:c6614597c135 70 * get CCT(McCAMY FOMULA) value Y
Rhyme 3:c6614597c135 71 * @param none
Rhyme 3:c6614597c135 72 * @returns float CCT value Y
Rhyme 3:c6614597c135 73 */
shockey 1:5540b216acfc 74 float getY(void) ; // return float value of Y
Rhyme 3:c6614597c135 75
Rhyme 3:c6614597c135 76 /**
Rhyme 3:c6614597c135 77 * get CCT(McCAMY FOMULA) value Z
Rhyme 3:c6614597c135 78 * @param none
Rhyme 3:c6614597c135 79 * @returns float CCT value Z
Rhyme 3:c6614597c135 80 */
shockey 1:5540b216acfc 81 float getZ(void) ; // return float value of Z
Rhyme 3:c6614597c135 82
Rhyme 3:c6614597c135 83 /**
Rhyme 3:c6614597c135 84 * get CIE1931 X
Rhyme 3:c6614597c135 85 * @param none
Rhyme 3:c6614597c135 86 * @returns float CIE1931 X
Rhyme 3:c6614597c135 87 */
shockey 1:5540b216acfc 88 float getCIEX(void) ; // return float value of CIE1931_x
Rhyme 3:c6614597c135 89
Rhyme 3:c6614597c135 90 /**
Rhyme 3:c6614597c135 91 * get CIE1931 Y
Rhyme 3:c6614597c135 92 * @param none
Rhyme 3:c6614597c135 93 * @returns float CIE1931 Y
Rhyme 3:c6614597c135 94 */
shockey 1:5540b216acfc 95 float getCIEY(void) ; // return float value of CIE1931_y
shockey 1:5540b216acfc 96
shockey 0:e6e6107c659e 97 void getCOLORConf(uint8_t *colorconf) ;
shockey 0:e6e6107c659e 98 void setCOLORConf(uint8_t colorconf) ;
Rhyme 5:a4dcc19d057e 99
Rhyme 5:a4dcc19d057e 100 /**
Rhyme 5:a4dcc19d057e 101 * get Integration Time accoding to
Rhyme 5:a4dcc19d057e 102 * current colorconf setting.
Rhyme 5:a4dcc19d057e 103 * As error margin is +/-20%,
Rhyme 5:a4dcc19d057e 104 * The value has 25% addition.
Rhyme 5:a4dcc19d057e 105 */
Rhyme 5:a4dcc19d057e 106 int getIT(void) ;
Rhyme 5:a4dcc19d057e 107
Rhyme 5:a4dcc19d057e 108 /**
Rhyme 5:a4dcc19d057e 109 * set Integration Time
Rhyme 5:a4dcc19d057e 110 */
Rhyme 5:a4dcc19d057e 111 #define IT_40MS 0x00
Rhyme 5:a4dcc19d057e 112 #define IT_80MS 0x10
Rhyme 5:a4dcc19d057e 113 #define IT_160MS 0x20
Rhyme 5:a4dcc19d057e 114 #define IT_320MS 0x30
Rhyme 5:a4dcc19d057e 115 #define IT_640MS 0x40
Rhyme 5:a4dcc19d057e 116 #define IT_1280MS 0x50
Rhyme 5:a4dcc19d057e 117 void setIT(uint8_t it_value) ;
Rhyme 5:a4dcc19d057e 118
shockey 1:5540b216acfc 119 // void getX(uint8_t *X) ;
shockey 1:5540b216acfc 120 // void getY(uint8_t *Y) ;
shockey 1:5540b216acfc 121 // void getZ(uint8_t *Z) ;
Rhyme 3:c6614597c135 122 /**
Rhyme 3:c6614597c135 123 * get raw Red data
Rhyme 3:c6614597c135 124 * @param uint16_t *rdata
Rhyme 4:f5b142e3fe79 125 * @returns i2c status 0: success non-0: failure
Rhyme 3:c6614597c135 126 */
Rhyme 4:f5b142e3fe79 127 int getRData(uint16_t *rdata) ;
Rhyme 3:c6614597c135 128
Rhyme 3:c6614597c135 129 /**
Rhyme 3:c6614597c135 130 * get raw Green data
Rhyme 3:c6614597c135 131 * @param uint16_t *gdata
Rhyme 4:f5b142e3fe79 132 * @returns i2c status 0: success non-0: failure
Rhyme 3:c6614597c135 133 */
Rhyme 4:f5b142e3fe79 134 int getGData(uint16_t *gdata) ;
Rhyme 3:c6614597c135 135
Rhyme 3:c6614597c135 136 /**
Rhyme 3:c6614597c135 137 * get raw Blue data
Rhyme 3:c6614597c135 138 * @param uint16_t *bdata
Rhyme 4:f5b142e3fe79 139 * @returns i2c status 0: success non-0: failure
Rhyme 3:c6614597c135 140 */
Rhyme 4:f5b142e3fe79 141 int getBData(uint16_t *bdata) ;
Rhyme 3:c6614597c135 142
Rhyme 3:c6614597c135 143 /**
Rhyme 3:c6614597c135 144 * get raw White data
Rhyme 3:c6614597c135 145 * @param uint16_t *wdata
Rhyme 4:f5b142e3fe79 146 * @returns i2c status 0: success non-0: failure
Rhyme 3:c6614597c135 147 */
Rhyme 4:f5b142e3fe79 148 int getWData(uint16_t *wdata) ;
Rhyme 3:c6614597c135 149
shockey 1:5540b216acfc 150 // void getCCTiData(uint16_t *cctidata) ;
Rhyme 3:c6614597c135 151 /**
Rhyme 3:c6614597c135 152 * get CCTi data for CCT (EMPIRICAL APPROACH)
Rhyme 3:c6614597c135 153 * @param none
Rhyme 3:c6614597c135 154 * @returns float CCTi data
Rhyme 3:c6614597c135 155 */
shockey 1:5540b216acfc 156 float getCCTiData(void) ;
shockey 1:5540b216acfc 157 // void getCCTData(uint16_t *cctdata) ;
Rhyme 3:c6614597c135 158
Rhyme 3:c6614597c135 159 /**
Rhyme 3:c6614597c135 160 * get CCT data (EMPIRICAL APPROACH)
Rhyme 3:c6614597c135 161 * @param none
Rhyme 3:c6614597c135 162 * @returns float CCD data
Rhyme 3:c6614597c135 163 */
shockey 1:5540b216acfc 164 float getCCTData(void) ;
shockey 0:e6e6107c659e 165 // void cmdRead(uint8_t cmd, uint8_t *data, uint8_t numdata = 2) ;
shockey 0:e6e6107c659e 166 // void cmdWrite(uint8_t cmd, uint8_t *data, uint8_t numdata = 2) ;
shockey 0:e6e6107c659e 167
shockey 0:e6e6107c659e 168 private:
shockey 0:e6e6107c659e 169 I2C m_i2c;
shockey 0:e6e6107c659e 170 int m_addr;
Rhyme 4:f5b142e3fe79 171 int readRegs(int addr, uint8_t * data, int len);
Rhyme 4:f5b142e3fe79 172 int writeRegs(uint8_t * data, int len);
shockey 0:e6e6107c659e 173 } ;
shockey 0:e6e6107c659e 174 #endif /* _VEML6040_H_ */