1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/drivers/include/sht1x.h
Marian Buschsieweke d208c224b0
drivers: Renamed module sht11 to sht1x
The sensor family SHT10, SHT11 and SHT15 only differ in their accuracy (as in
calibration, not as in resolution). Thus, the same driver can be used for all.
The new driver name better reflects this fact.
2018-06-27 08:57:58 +02:00

110 lines
2.8 KiB
C

/*
* Copyright 2009, Freie Universitaet Berlin (FUB). All rights reserved.
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @defgroup drivers_sht1x SHT10/SHT11/SHT15 Humidity and Temperature Sensor
* @ingroup drivers_sensors
* @brief Driver for Sensirion SHT10/SHT11/SHT15 Humidity and Temperature
Sensor
* @{
*
* @file
* @brief SHT10/SHT11/SHT15 Device Driver
*
* @author Freie Universität Berlin, Computer Systems & Telematics
*/
#ifndef SHT1X_H
#define SHT1X_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#define SHT1X_NO_ACK (0) /**< don't ack read in `read_byte` */
#define SHT1X_ACK (1) /**< do acknowledge read in `read_byte` */
/* adr command r/w */
#define SHT1X_STATUS_REG_W (0x06) /**< will write to status register */
#define SHT1X_STATUS_REG_R (0x07) /**< will read from status register */
#define SHT1X_MEASURE_TEMP (0x03) /**< tell sensor to measure temperature */
#define SHT1X_MEASURE_HUMI (0x05) /**< tell sensor to measure humidity */
#define SHT1X_RESET (0x1E) /**< reset the sensor */
/** time to wait after toggling the data line */
#define SHT1X_DATA_WAIT (1)
/** time to wait after toggling the clock line */
#define SHT1X_CLK_WAIT (1)
/** set measurement timeout to 1 second */
#define SHT1X_MEASURE_TIMEOUT (1000)
/**
* @brief sht11 measureable data
*/
typedef struct {
float temperature; /**< temperature value */
float relhum; /**< linear relative humidity */
float relhum_temp; /**< temperature compensated relative humidity */
} sht1x_val_t;
/**
* @brief SHT11 modes that can be measured
*/
typedef enum {
TEMPERATURE = 1,
HUMIDITY = 2
} sht1x_mode_t;
/**
* @brief Initialize SHT11 ports
*/
void sht1x_init(void);
/**
* @brief Read sensor
*
* @param value The struct to be filled with measured values
* @param mode Specifies type of data to be read
*
* @return 1 on success, 0 otherwise
*
* Example:
* \code sht1x_val sht11;
* sht1x_read_sensor(&sht11, HUMIDITY|TEMPERATURE);
* printf("%-6.2f °C %5.2f %% %5.2f %%\n", sht11.temperature, sht11.relhum, sht11.relhum_temp); \endcode
*/
uint8_t sht1x_read_sensor(sht1x_val_t *value, sht1x_mode_t mode);
/**
* @brief Write status register
*
* @param p_value The value to write
*
* @return 1 on success, 0 otherwise
*/
uint8_t sht1x_write_status(uint8_t *p_value);
/**
* @brief Read status register with checksum
*
* @param p_value The read value
* @param p_checksum The received checksum
*
* return 1 on success, 0 otherwise
*/
uint8_t sht1x_read_status(uint8_t *p_value, uint8_t *p_checksum);
#ifdef __cplusplus
}
#endif
#endif /* SHT1X_H */
/** @} */