unleashed-firmware/applications/plugins/dht_temp_sensor/DHT.h

41 lines
1.8 KiB
C
Raw Normal View History

2022-11-01 22:38:09 +00:00
#ifndef DHT_H_
#define DHT_H_
#include <furi_hal_resources.h>
/* Настройки */
#define DHT_TIMEOUT 65534 //Количество итераций, после которых функция вернёт пустые значения
#define DHT_POLLING_CONTROL 1 //Включение проверки частоты опроса датчика
#define DHT_POLLING_INTERVAL_DHT11 \
2000 //Интервал опроса DHT11 (0.5 Гц по даташиту). Можно поставить 1500, будет работать
2022-11-04 14:51:56 +00:00
//Костыль, временно 2 секунды для датчика AM2302
#define DHT_POLLING_INTERVAL_DHT22 2000 //Интервал опроса DHT22 (1 Гц по даташиту)
2022-11-01 22:38:09 +00:00
#define DHT_IRQ_CONTROL //Выключать прерывания во время обмена данных с датчиком
/* Структура возвращаемых датчиком данных */
typedef struct {
float hum;
float temp;
} DHT_data;
/* Тип используемого датчика */
typedef enum { DHT11, DHT22 } DHT_type;
/* Структура объекта датчика */
typedef struct {
char name[11];
const GpioPin* GPIO; //Пин датчика
DHT_type type; //Тип датчика (DHT11 или DHT22)
//Контроль частоты опроса датчика. Значения не заполнять!
#if DHT_POLLING_CONTROL == 1
uint32_t lastPollingTime; //Время последнего опроса датчика
float lastTemp; //Последнее значение температуры
float lastHum; //Последнее значение влажности
#endif
} DHT_sensor;
/* Прототипы функций */
DHT_data DHT_getData(DHT_sensor* sensor); //Получить данные с датчика
#endif