Библиотека для работы с датчиками DHT11/DHT22/AM2302/AM2301 на STM32. Для управления портами ввода/вывода используется HAL. Имеется возможность переделки под CMSIS, SPL или под другие микроконтроллеры.
- Настройте ваш проект в CubeMX. Настройте необходимый порт ввода/вывода в любом направлении (на ввод или вывод, не важно). Сгенерируйте проект.
- Скопируйте
DHT.h
иDHT.c
в папки проектаInc
иSrc
соответственно. При необходимости подключите файлы в IDE. - В
DHT.h
укажите используемый порт, а так же при необходимости включите подтяжку линии данных. - Подключите
DHT.h
в нужном файле и для получения данных с датчика вызовитеDHT_getData()
указав в аругменте тип датчика - DHT11 или DHT22.
#include "DHT.h"
#include <stdio.h>
int main(void) {
while(1) {
DHT_data d = DHT_getData(DHT22);
printf("Temp: %2.1f*С, Hum: %2.1f%%\r\n", d.temp, d.hum);
HAL_Delay(1000);
}
}
UPD: Люди подсказывают о необходимости флага -u _printf_float
в опциях линкера для печати чисел с плавающей точкой, но лично мне не понадобился ¯_(ツ)_/¯.
Для переделки под, например, AVR, в DHT.c
переделайте значения макроподстановок lineDown()
, lineUp()
, getLine()
, Delay()
и функции goToOutput()
, goToInput()
.
Предложения или найденные баги можно сообщить в Telegram http://t.me/rainbowkiwifox, ВКонтакте https://vk.com/rainbowkiwifox или на почту [email protected]