|
|
- // -----------------------------------------------------------------------------
- // VEML6075 Sensor over I2C
- // Copyright (C) 2017-2018 by Xose Pérez <xose dot perez at gmail dot com>
- // -----------------------------------------------------------------------------
-
- #if SENSOR_SUPPORT && VEML6075_SUPPORT
-
- #pragma once
-
- #undef I2C_SUPPORT
- #define I2C_SUPPORT 1 // Explicitly request I2C support.
-
-
- #include "Arduino.h"
- #include "I2CSensor.h"
- #include "SparkFun_VEML6075_Arduino_Library.h"
-
- class VEML6075Sensor : public I2CSensor {
-
- public:
-
- // ---------------------------------------------------------------------
- // Public
- // ---------------------------------------------------------------------
-
- VEML6075Sensor(): I2CSensor() {
- _count = 3;
- _sensor_id = SENSOR_VEML6075_ID;
- _veml6075 = new VEML6075();
- }
-
- ~VEML6075Sensor() {
- delete _veml6075;
- }
-
- void begin() {
- if (!_veml6075->begin()) {
- return;
- };
-
- _ready = true;
- }
-
- // ---------------------------------------------------------------------
- // Sensor API
- // ---------------------------------------------------------------------
-
- // Descriptive name of the sensor
- String description() {
- char buffer[25];
- snprintf(buffer, sizeof(buffer), "VEML6075 @ I2C (0x%02X)", _address);
- return String(buffer);
- }
-
- // Descriptive name of the slot # index
- String slot(unsigned char index) {
- return description();
- };
-
- // Type for slot # index
- unsigned char type(unsigned char index) {
- if (index == 0) return MAGNITUDE_UVA;
- if (index == 1) return MAGNITUDE_UVB;
- if (index == 2) return MAGNITUDE_UVI;
- return MAGNITUDE_NONE;
- }
-
- // Pre-read hook (usually to populate registers with up-to-date data)
- void pre() {
- _error = SENSOR_ERROR_OK;
- }
-
- // Current value for slot # index
- double value(unsigned char index) {
- if (index == 0) return _veml6075->a();
- if (index == 1) return _veml6075->b();
- if (index == 2) return _veml6075->index();
-
- return 0;
- }
-
- void setIntegrationTime(VEML6075::veml6075_uv_it_t integration_time) {
- _veml6075->setIntegrationTime(integration_time);
- }
-
- void setDynamicMode(VEML6075::veml6075_hd_t dynamic_mode) {
- _veml6075->setHighDynamic(dynamic_mode);
- }
-
- protected:
-
- VEML6075 * _veml6075 = NULL;
-
- };
-
- #endif // SENSOR_SUPPORT && VEML6075_SUPPORT
|