Frank Vannieuwkerke / TEMT6200

Dependents:   TEMT6200_demo Wi-Go_IOT_Demo MMA8451Q IoT_World_Hackathon_WiGo_NSP_Demo ... more

Committer:
frankvnk
Date:
Sun Jun 16 19:46:48 2013 +0000
Revision:
2:9ea0258a044a
Parent:
1:1855efa8d3c0
Child:
3:55136b956b17
Added info about pintypes - corrected info read output (returns lux value)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frankvnk 0:9e9ed4a5a547 1 /**************************************************************************************************
frankvnk 0:9e9ed4a5a547 2 ***** *****
frankvnk 0:9e9ed4a5a547 3 ***** Name: TEMT6200.h *****
frankvnk 0:9e9ed4a5a547 4 ***** Date: 15/06/2013 *****
frankvnk 0:9e9ed4a5a547 5 ***** Auth: Frank Vannieuwkerke *****
frankvnk 0:9e9ed4a5a547 6 ***** Func: library for TEMT6200 ambient light sensor *****
frankvnk 0:9e9ed4a5a547 7 ***** *****
frankvnk 0:9e9ed4a5a547 8 **************************************************************************************************/
frankvnk 0:9e9ed4a5a547 9
frankvnk 0:9e9ed4a5a547 10 #include "mbed.h"
frankvnk 0:9e9ed4a5a547 11
frankvnk 0:9e9ed4a5a547 12 #ifndef TEMT6200_H
frankvnk 0:9e9ed4a5a547 13 #define TEMT6200_H
frankvnk 0:9e9ed4a5a547 14
frankvnk 0:9e9ed4a5a547 15 #define AMB_ON (bool) 1
frankvnk 0:9e9ed4a5a547 16 #define AMB_OFF (bool) 0
frankvnk 0:9e9ed4a5a547 17 #define TEMT_AREF (float)3.3 // Analog reference voltage
frankvnk 0:9e9ed4a5a547 18 #define TEMT_MAXLX 1290 // Calculated max. lux
frankvnk 0:9e9ed4a5a547 19 #define TEMT_AMP 11 // Op-amp amplification
frankvnk 0:9e9ed4a5a547 20 #define TEMT_IAVG (float)0.02325 // Theoretical average Ipce @ 100lux
frankvnk 0:9e9ed4a5a547 21 #define TEMT_DARKC (float)0.000050 // Max. dark current
frankvnk 0:9e9ed4a5a547 22
frankvnk 0:9e9ed4a5a547 23 /** Class to use TEMT6200 ambient light sensor
frankvnk 2:9ea0258a044a 24 * 'en' pin can be any digital pin.
frankvnk 2:9ea0258a044a 25 * 'level' pin MUST be an analog input
frankvnk 0:9e9ed4a5a547 26 */
frankvnk 0:9e9ed4a5a547 27
frankvnk 0:9e9ed4a5a547 28 class TEMT6200 {
frankvnk 0:9e9ed4a5a547 29 public:
frankvnk 0:9e9ed4a5a547 30 /** Create a TEMT6200 object connected to 2 pins
frankvnk 0:9e9ed4a5a547 31 *
frankvnk 1:1855efa8d3c0 32 * @param en = Power on/off output
frankvnk 1:1855efa8d3c0 33 * @param level = TEMT6200 analog level input
frankvnk 0:9e9ed4a5a547 34 * @return none
frankvnk 0:9e9ed4a5a547 35 */
frankvnk 0:9e9ed4a5a547 36 TEMT6200(PinName en, PinName level);
frankvnk 0:9e9ed4a5a547 37
frankvnk 2:9ea0258a044a 38 /** Read TEMT6200 level (lux)
frankvnk 0:9e9ed4a5a547 39 * @param none
frankvnk 2:9ea0258a044a 40 * @return lux value (float)
frankvnk 0:9e9ed4a5a547 41 */
frankvnk 0:9e9ed4a5a547 42 float read(void);
frankvnk 0:9e9ed4a5a547 43
frankvnk 0:9e9ed4a5a547 44 /** Power control
frankvnk 0:9e9ed4a5a547 45 * @param AMB_ON = enable light sensor
frankvnk 0:9e9ed4a5a547 46 * @param AMB_OFF = disable light sensor
frankvnk 0:9e9ed4a5a547 47 * @return none
frankvnk 0:9e9ed4a5a547 48 */
frankvnk 0:9e9ed4a5a547 49 void pwr(bool pwr);
frankvnk 0:9e9ed4a5a547 50
frankvnk 0:9e9ed4a5a547 51 /** Calibrate the ambient light sensor
frankvnk 0:9e9ed4a5a547 52 * @param none
frankvnk 0:9e9ed4a5a547 53 * @return none
frankvnk 1:1855efa8d3c0 54 * @return . IMPORTANT : Totally obscure the sensor before calibration.
frankvnk 1:1855efa8d3c0 55 * @return . This function will modify the Ipce100 variable.
frankvnk 1:1855efa8d3c0 56 * @return . Running the calibration with an uncovered sensor will return the theoretical mean value.
frankvnk 0:9e9ed4a5a547 57 */
frankvnk 0:9e9ed4a5a547 58 void calibrate(void);
frankvnk 0:9e9ed4a5a547 59
frankvnk 0:9e9ed4a5a547 60 /** Convert lux value to percentile
frankvnk 2:9ea0258a044a 61 * @param input lux_val : lux value to be converted - range: 0..TEMT6200_MAXLX lux (float)
frankvnk 0:9e9ed4a5a547 62 * @return Value for setting ComparatorIn treshold (float)
frankvnk 2:9ea0258a044a 63 * @return . Conversion accuracy depends on the DAC input used with the comparator input:
frankvnk 2:9ea0258a044a 64 * @return . 6-bit for the internal DAC0, 12-bit for the external DAC.
frankvnk 2:9ea0258a044a 65 * @return . When 6-bit is used, the input lux value is rounded to the nearest multiple of TEMT6200_MAXLX / 64.
frankvnk 0:9e9ed4a5a547 66 */
frankvnk 0:9e9ed4a5a547 67 float lux_pct(float lux_val);
frankvnk 0:9e9ed4a5a547 68
frankvnk 0:9e9ed4a5a547 69 private:
frankvnk 0:9e9ed4a5a547 70 DigitalOut _en;
frankvnk 0:9e9ed4a5a547 71 AnalogIn _level;
frankvnk 0:9e9ed4a5a547 72 float Ipce100;
frankvnk 0:9e9ed4a5a547 73 };
frankvnk 0:9e9ed4a5a547 74
frankvnk 0:9e9ed4a5a547 75 #endif