SHT3x driver - small changes

This commit is contained in:
Gunar Schorcht 2017-10-13 13:39:09 +02:00
parent 3fee4b8f0c
commit 6d0545837c

View file

@ -17,6 +17,8 @@
* +------------------------+ +----------+ * +------------------------+ +----------+
*/ */
// #define SINGLE_SHOT_MODE
#include "espressif/esp_common.h" #include "espressif/esp_common.h"
#include "esp/uart.h" #include "esp/uart.h"
@ -33,13 +35,11 @@
static sht3x_sensor_t* sensor; // sensor device data structure static sht3x_sensor_t* sensor; // sensor device data structure
// #define SINGLE_SHOT_MODE
#ifdef SINGLE_SHOT_MODE #ifdef SINGLE_SHOT_MODE
/* /*
* User task that triggers measurements of sensor every 5 seconds. Due to * User task that triggers a measurement every 5 seconds. Due to
* power efficiency reasons, it uses the SHT3x *single_shot* and *vTaskDelay* * power efficiency reasons, it uses the SHT3x *single_shot* and
* to wait for measurement results. * *vTaskDelay* to wait for measurement results.
*/ */
void user_task (void *pvParameters) void user_task (void *pvParameters)
{ {
@ -78,23 +78,23 @@ void user_task (void *pvParameters)
{ {
sht3x_values_t values; sht3x_values_t values;
// start periodic measurement mode // start periodic measurements with 1 measurement per second
sht3x_start_measurement (sensor, periodic_1mps); sht3x_start_measurement (sensor, periodic_1mps);
// busy waiting until measurement results are available // busy waiting until first measurement results are available
while (sht3x_is_measuring (sensor) > 0) ; while (sht3x_is_measuring (sensor) > 0) ;
TickType_t last_wakeup = xTaskGetTickCount(); TickType_t last_wakeup = xTaskGetTickCount();
while (1) while (1)
{ {
// retrieve the values and do something with them // get the values and do something with them
if (sht3x_get_results (sensor, &values)) if (sht3x_get_results (sensor, &values))
printf("%.3f SHT3x Sensor: %.2f °C, %.2f %%\n", printf("%.3f SHT3x Sensor: %.2f °C, %.2f %%\n",
(double)sdk_system_get_time()*1e-3, (double)sdk_system_get_time()*1e-3,
values.temperature, values.humidity); values.temperature, values.humidity);
// passive waiting until 2 seconds are over // passive waiting until 2 seconds (cycle time) are over
vTaskDelayUntil(&last_wakeup, 2000 / portTICK_PERIOD_MS); vTaskDelayUntil(&last_wakeup, 2000 / portTICK_PERIOD_MS);
} }
} }
@ -102,10 +102,6 @@ void user_task (void *pvParameters)
void user_init(void) void user_init(void)
{ {
// Please note: Return values are not considered in this example for
// readability reasons. All functions return boolean and set an error
// code that allows effective error handling.
// Set UART Parameter // Set UART Parameter
uart_set_baud(0, 115200); uart_set_baud(0, 115200);
@ -117,10 +113,11 @@ void user_init(void)
i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K); i2c_init(I2C_BUS, I2C_SCL_PIN, I2C_SDA_PIN, I2C_FREQ_100K);
// Create sensors // Create sensors
sensor = sht3x_init_sensor (I2C_BUS, SHT3x_ADDR_2); if ((sensor = sht3x_init_sensor (I2C_BUS, SHT3x_ADDR_2)))
{
// Create a user task that uses the sensor // Create a user task that uses the sensor
xTaskCreate(user_task, "user_task", 256, NULL, 2, 0); xTaskCreate(user_task, "user_task", 256, NULL, 2, 0);
}
// That's it. // That's it.
} }