Librería DHT11 – Miuva

Descargar librería en español

Descargar librería en inglés

El DHT11 es un sensor de temperatura y de humedad.

Definición de pines

El primer paso es definir la ubicación de los pines para que estos coincidan con las conexiones de tu tarjeta. Esto se puede hacer editando el archivo DHT11.h.

DATA_DHT11: Pin de datos del sensor

Funciones

Las funciones definidas en la librería son:

void DHT11_Start()

Esta función sirve para iniciar la comunicación entre el sensor y nuestro microcontroaldor.

Parámetros de entrada:

  • No hay parámetros

Parámetros de salida:

  • No hay parámetros

void DHT11_Response()

Esta función sirve para esperar la respuesta del sensor en caso de que haya recibido la condición de inicio de transferencia.

Parámetros de entrada:

  • No hay parámetros

Parámetros de salida:

  • No hay parámetros

int DHT11_ReadByte()

Esta función recibe y almacena un byte recibido de información.

Parámetros de entrada:

  • No hay parámetros

Parámetros de salida:

  • int: Almacena el byte recibido del sensor.

 

int DHT11_ReadData(int *info)

Esta función realiza todo lo necesario para recibir y almacenar los 5 bytes de información que nos envía el sensor.

Parámetros de entrada:

  • int *info: En esta variable se guardará la información de todos los bytes recibidos por el sensor.
    • info[0]: humedad entero
    • info[1]: humedad decimal
    • info[2]: temperatura entero
    • info[3]: temperatura decimal
    • info[4]: paridad

Parámetros de salida:

  • int: Nos indica si la recepción de datos fue o no exitosa.
    • 1: Si la información se recibió correctamente
    • 0: Si la información NO se recibió correctamente

Código de ejemplo

#include    <18f4550.h>
#Fuses      HSPLL, NOWDT, NOPROTECT, NOLVP, NODEBUG, USBDIV, PLL2, CPUDIV1, VREGEN
#use        delay (clock=48M)         //Seleccionamos la frecuencia de reloj de 48MHz
#include    <MLCD.c> 
#use        standard_io(c)
#include    "DHT11.c"

int   valores[5]={0,0,0,0,0}; // Almacena los 40 bits recibidos
int   dataOK = 0;

void  main(void){
      lcd_init();
      while(true){
         dataOK = DHT11_ReadData(valores);
         if (dataOK){
            printf(lcd_putc, "\fSens");
            lcd_gotoxy(1,2);
            printf(lcd_putc, "DHT11");
            lcd_gotoxy(7,1);
            printf(lcd_putc, "Hum=%2d.%1d%%", valores[0],valores[1]);
            lcd_gotoxy(7,2);
            printf(lcd_putc, "Tem=%2d.%1dC", valores[2],valores[3]);
         }
         else{
            printf(lcd_putc, "\f NO CONNECTED");
         }
         delay_ms(1500);
      }  
}

 

Menú