px-fwlib 0.10.0
Cross-platform embedded library and documentation for 8/16/32-bit microcontrollers generated with Doxygen 1.9.2
px_veml6075.h
1#ifndef __PX_VEML6075_H__
2#define __PX_VEML6075_H__
3/* =============================================================================
4 ____ ___ ____ ___ _ _ ___ __ __ ___ __ __ TM
5 | _ \ |_ _| / ___| / _ \ | \ | | / _ \ | \/ | |_ _| \ \/ /
6 | |_) | | | | | | | | | | \| | | | | | | |\/| | | | \ /
7 | __/ | | | |___ | |_| | | |\ | | |_| | | | | | | | / \
8 |_| |___| \____| \___/ |_| \_| \___/ |_| |_| |___| /_/\_\
9
10 Copyright (c) 2019 Pieter Conradie <https://piconomix.com>
11
12 License: MIT
13 https://github.com/piconomix/px-fwlib/blob/master/LICENSE.md
14
15 Title: px_veml6075.h : Vishay VEML6075 UV light sensor driver
16 Author(s): Pieter Conradie
17 Creation Date: 2019-09-05
18
19============================================================================= */
20
21/**
22 * @ingroup DEVICES_SENSOR
23 * @defgroup PX_VEML6075 px_veml6075.h : Vishay VEML6075 UV light sensor driver
24 *
25 * File(s):
26 * - devices/sensor/inc/px_veml6075.h
27 * - devices/sensor/src/px_veml6075.c
28 *
29 * Reference:
30 * - [Vishay VEML6075 datasheet](http://www.vishay.com/docs/84304/veml6075.pdf)
31 *
32 * @{
33 */
34
35/* _____STANDARD INCLUDES____________________________________________________ */
36
37/* _____PROJECT INCLUDES_____________________________________________________ */
38#include "px_defs.h"
39#include "px_i2c.h"
40
41#ifdef __cplusplus
42extern "C"
43{
44#endif
45/* _____DEFINITIONS__________________________________________________________ */
46/// VEML6075 I2C Slave address
47#define PX_VEML6075_I2C_SLA_ADR 0x10
48
49/* _____TYPE DEFINITIONS_____________________________________________________ */
50/// Raw sensor data
51typedef struct
52{
53 uint16_t uva;
54 uint16_t uvb;
55 uint16_t uvcomp1;
56 uint16_t uvcomp2;
58
59/* _____GLOBAL VARIABLES_____________________________________________________ */
60
61/* _____GLOBAL FUNCTION DECLARATIONS_________________________________________ */
62/**
63 * Initialise driver.
64 *
65 * @param handle I2C handle of device
66 *
67 * @retval true Device detected on I2C and ID value is correct
68 * @retval false Device not detected on I2C bus
69 */
71
72/**
73 * Take UVA & UVB measurement.
74 *
75 * @param data Pointer to structure to contain sensor data
76 *
77 * @retval true Measurement made
78 * @retval false Failure
79 */
81
82/**
83 * Calculate UVA from raw sensor data.
84 *
85 * @param data Pointer to raw sensor data
86 *
87 * @return float UVA
88 */
89float px_veml6075_uva(const px_veml6075_data_t * data);
90
91
92/**
93 * Calculate UVB from raw sensor data.
94 *
95 * @param data Pointer to raw sensor data
96 *
97 * @return float UVB
98 */
99float px_veml6075_uvb(const px_veml6075_data_t * data);
100
101/**
102 * Calculate UVI from raw sensor data.
103 *
104 * @param data Pointer to raw sensor data
105 *
106 * @return float UVI
107 */
108float px_veml6075_uvi(const px_veml6075_data_t * data);
109
110/* _____MACROS_______________________________________________________________ */
111
112#ifdef __cplusplus
113}
114#endif
115
116/// @}
117#endif
bool px_veml6075_init(px_i2c_handle_t *handle)
Initialise driver.
Definition: px_veml6075.c:120
float px_veml6075_uvi(const px_veml6075_data_t *data)
Calculate UVI from raw sensor data.
Definition: px_veml6075.c:229
float px_veml6075_uva(const px_veml6075_data_t *data)
Calculate UVA from raw sensor data.
Definition: px_veml6075.c:207
float px_veml6075_uvb(const px_veml6075_data_t *data)
Calculate UVB from raw sensor data.
Definition: px_veml6075.c:218
bool px_veml6075_meas(px_veml6075_data_t *data)
Take UVA & UVB measurement.
Definition: px_veml6075.c:165
Raw sensor data.
Definition: px_veml6075.h:52
Define I2C handle for a slave.
Definition: px_i2c.h:104