Le capteur DHT11 utilise dans ce module combine un capteur de température et un capteur d’hygrométrie. Ce capteur utilise un processeur interne :
- pour conditionner les signaux mesuré pour les restituer sous une forme directement exploitable,
- pour effectuer les corrections nécessaires.
Ce module communique sur un bus mono-fil analogue à un bus I2C sans horloge. L’utilisation d’un tel bus est décrite dans un article spécial. Pour cette exemple on utilise la bibliothèque spéciale : « DHT ».

/***
* Auteur: Jean DEMARTINI
* Date: 3/07/2015
*
* Capteur Combo Température Hygrométrie DHT11
*
* +-------+
* | DHT11 |
* | |
* +-|-|-|-+
* 1 2 3
*
* Ce capteur communique sur un bus Single-Wire
* Ce type de bus est en fait un I2C sans horloge
* Le décodage des données échangées utilise une librairie
* ici: "DHT"
*
* 1: Data
* 2: Vcc (3.3V-5V)
* 3: GND
***/
#include
dht DHT;
#define DHT11_PIN 5
void
setup() {
Serial.begin(115200);
Serial.println("DHT TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT_LIB_VERSION);
Serial.println();
Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
}
void
loop() {
// READ DATA
Serial.print("DHT11, \t");
int chk = DHT.read11(DHT11_PIN);
switch (chk) {
case DHTLIB_OK:
Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
case DHTLIB_ERROR_CONNECT:
Serial.print("Connect error,\t");
break;
case DHTLIB_ERROR_ACK_L:
Serial.print("Ack Low error,\t");
break;
case DHTLIB_ERROR_ACK_H:
Serial.print("Ack High error,\t");
break;
default:
Serial.print("Unknown error,\t");
break;
}
// affichage
Serial.print(DHT.humidity, 1);
Serial.print(",\t\t");
Serial.println(DHT.temperature, 1);
delay(5000);
}
Ce programme fournit les résultats suivant :
