Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: TEMT6200_demo Wi-Go_IOT_Demo MMA8451Q IoT_World_Hackathon_WiGo_NSP_Demo ... more
TEMT6200.h@2:9ea0258a044a, 2013-06-16 (annotated)
- 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?
| User | Revision | Line number | New 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 |
TEMT6200