VEML7700 High Accuracy Ambient Light Sensor with I2C Interface

Dependents:   testVEML7700 ROS_VEML7700_test ROSSerial_MultipleSensors

Committer:
Rhyme
Date:
Fri May 19 06:18:33 2017 +0000
Revision:
3:67634e08150f
Parent:
2:63196ef2a2ed
comment for higher bits of config register added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Rhyme 0:6dabb0ddf3d9 1 #ifndef _VEML7700_H_
Rhyme 0:6dabb0ddf3d9 2 #define _VEML7700_H_
Rhyme 0:6dabb0ddf3d9 3 /**
Rhyme 0:6dabb0ddf3d9 4 * Vishay VEML7700
Rhyme 0:6dabb0ddf3d9 5 * High Accuracy Ambient Light Sensor with I2C Interface
Rhyme 0:6dabb0ddf3d9 6 */
Rhyme 0:6dabb0ddf3d9 7 /*
Rhyme 0:6dabb0ddf3d9 8 * @code
Rhyme 0:6dabb0ddf3d9 9 * @endcode
Rhyme 0:6dabb0ddf3d9 10 */
Rhyme 0:6dabb0ddf3d9 11 class VEML7700
Rhyme 0:6dabb0ddf3d9 12 {
Rhyme 0:6dabb0ddf3d9 13 public:
Rhyme 0:6dabb0ddf3d9 14 /**
Rhyme 0:6dabb0ddf3d9 15 * VEML7700 constructor
Rhyme 0:6dabb0ddf3d9 16 *
Rhyme 0:6dabb0ddf3d9 17 * @param sda SDA pin
Rhyme 0:6dabb0ddf3d9 18 * @param sdl SCL pin
Rhyme 0:6dabb0ddf3d9 19 * @param addr addr of the I2C peripheral
Rhyme 0:6dabb0ddf3d9 20 */
Rhyme 0:6dabb0ddf3d9 21 VEML7700(PinName sda, PinName scl, int addr);
Rhyme 0:6dabb0ddf3d9 22
Rhyme 0:6dabb0ddf3d9 23 /**
Rhyme 0:6dabb0ddf3d9 24 * VEML7700 destructor
Rhyme 0:6dabb0ddf3d9 25 */
Rhyme 0:6dabb0ddf3d9 26 ~VEML7700();
Rhyme 2:63196ef2a2ed 27
Rhyme 2:63196ef2a2ed 28 /**
Rhyme 2:63196ef2a2ed 29 * set ALS Configure register
Rhyme 2:63196ef2a2ed 30 * @param uint16_t conf value to set
Rhyme 2:63196ef2a2ed 31 * @returns none
Rhyme 3:67634e08150f 32 * @note bit[15:13] (reserved)
Rhyme 3:67634e08150f 33 * @note -
Rhyme 3:67634e08150f 34 * @note bit[12:11] ALS_GAIN Gain selection
Rhyme 3:67634e08150f 35 * @note 00=ALS gain x1, 01=ALS gain x2, 10=ALS gain x(1/8), 11=ALS gain x (1/4)
Rhyme 3:67634e08150f 36 * @note -
Rhyme 3:67634e08150f 37 * @note bit[10] (reserved)
Rhyme 3:67634e08150f 38 * @note -
Rhyme 3:67634e08150f 39 * @note bit[9:6] ALS_IT ALS integration time setting
Rhyme 3:67634e08150f 40 * @note 1100=25ms, 1000=50ms, 0000=100ms, 0001=200ms, 0010=400ms, 0011=800ms
Rhyme 3:67634e08150f 41 * @note -
Rhyme 2:63196ef2a2ed 42 * @note bit[5:4] ALS_PERS ALS persistence protect number setting
Rhyme 2:63196ef2a2ed 43 * @note 00=1, 01=2, 10= 4, 11=8
Rhyme 2:63196ef2a2ed 44 * @note -
Rhyme 2:63196ef2a2ed 45 * @note bit[1] ALS_INT_EN ALS interrupt enable setting
Rhyme 2:63196ef2a2ed 46 * @note 0:ALS INT disable, 1:ALS INT enable
Rhyme 2:63196ef2a2ed 47 * @note -
Rhyme 2:63196ef2a2ed 48 * @note bit[0] ALS_SD ALS shutdown setting
Rhyme 2:63196ef2a2ed 49 * @note 0=ALS power on, 1=ALS shutdown
Rhyme 2:63196ef2a2ed 50 */
Rhyme 0:6dabb0ddf3d9 51 void setALSConf(uint16_t conf) ;
Rhyme 2:63196ef2a2ed 52
Rhyme 2:63196ef2a2ed 53 /**
Rhyme 2:63196ef2a2ed 54 * set ALS high threshold window setting
Rhyme 2:63196ef2a2ed 55 * @param uint16_t wh value to set
Rhyme 2:63196ef2a2ed 56 * @returns none
Rhyme 2:63196ef2a2ed 57 */
Rhyme 0:6dabb0ddf3d9 58 void setALS_WH(uint16_t wh) ;
Rhyme 2:63196ef2a2ed 59
Rhyme 2:63196ef2a2ed 60 /**
Rhyme 2:63196ef2a2ed 61 * set ALS low threshold window setting
Rhyme 2:63196ef2a2ed 62 * @param uint16_t wl value to set
Rhyme 2:63196ef2a2ed 63 * @returns none
Rhyme 2:63196ef2a2ed 64 */
Rhyme 0:6dabb0ddf3d9 65 void setALS_WL(uint16_t wl) ;
Rhyme 2:63196ef2a2ed 66
Rhyme 2:63196ef2a2ed 67 /**
Rhyme 2:63196ef2a2ed 68 * set Power Saving setting
Rhyme 2:63196ef2a2ed 69 * @param uint16_t ps
Rhyme 2:63196ef2a2ed 70 * @returns none
Rhyme 2:63196ef2a2ed 71 * @note bit[2:1] PSM Power Saving Mode
Rhyme 2:63196ef2a2ed 72 * @note bit[0] PSM_EN Power Saving Mode enable setting
Rhyme 2:63196ef2a2ed 73 */
Rhyme 0:6dabb0ddf3d9 74 void setPowerSaving(uint16_t ps) ;
Rhyme 2:63196ef2a2ed 75
Rhyme 2:63196ef2a2ed 76 /**
Rhyme 2:63196ef2a2ed 77 * get ALS
Rhyme 2:63196ef2a2ed 78 * @param none
Rhyme 2:63196ef2a2ed 79 * @returns uint16_t ALS (Ambient Light Sensed(?))
Rhyme 2:63196ef2a2ed 80 */
Rhyme 0:6dabb0ddf3d9 81 uint16_t getALS(void) ;
Rhyme 2:63196ef2a2ed 82
Rhyme 2:63196ef2a2ed 83 /**
Rhyme 2:63196ef2a2ed 84 * get White channel reading
Rhyme 2:63196ef2a2ed 85 * @param none
Rhyme 2:63196ef2a2ed 86 * @returns uint16_t White channel sensed
Rhyme 2:63196ef2a2ed 87 */
Rhyme 0:6dabb0ddf3d9 88 uint16_t getWHITE(void) ;
Rhyme 2:63196ef2a2ed 89
Rhyme 2:63196ef2a2ed 90 /**
Rhyme 2:63196ef2a2ed 91 * get ALS INT trigger event
Rhyme 2:63196ef2a2ed 92 * @param none
Rhyme 2:63196ef2a2ed 93 * @returns uint16_t ALS_INT
Rhyme 2:63196ef2a2ed 94 * @note bit[15] ALS_IF_L ALS crossing low threshold INT trigger event
Rhyme 2:63196ef2a2ed 95 * @note bit[14] ALS_IF_H ALS crossing high threshold INT trigger event
Rhyme 2:63196ef2a2ed 96 * @note bit[13:0] (reserved)
Rhyme 2:63196ef2a2ed 97 */
Rhyme 0:6dabb0ddf3d9 98 uint16_t getALS_INT(void) ;
Rhyme 0:6dabb0ddf3d9 99
Rhyme 0:6dabb0ddf3d9 100 private:
Rhyme 0:6dabb0ddf3d9 101 I2C m_i2c;
Rhyme 0:6dabb0ddf3d9 102 int m_addr;
Rhyme 0:6dabb0ddf3d9 103 void readRegs(int addr, uint8_t * data, int len);
Rhyme 0:6dabb0ddf3d9 104 void writeRegs(uint8_t * data, int len);
Rhyme 0:6dabb0ddf3d9 105
Rhyme 0:6dabb0ddf3d9 106 };
Rhyme 0:6dabb0ddf3d9 107 #endif /* _VEML6030_H_ */