Amateur Radio Station R9AL

Описание


Цифровой датчик температуры иалажности DHT11
Напряжение питания: +3,3 - 5,5 В
Диапазон измерения: Разрешение: влажность 1% относительной влажности, температура 1 °C
Долгосрочная стабильность: <+ 1% относительной влажности / год

Примечания
  1. Избегать использования в условиях конденсации
  2. Температура длительного хранения 10-40 °C?, влажность ниже 60%
  3. Неправильное подулючение питания может повредить датчик
Пять, инструкция по применению О специфических проблемах синхронизации DHT11 мы можем обратиться к его таблице, см. Следующие модули: такие как наша компания Он связан с платой Arduino Выше приведено типичное его соединение с процессором, ниже приведены конкретные соединения ссылка
Код:

/* DHT11 temperature and humidity sensor
 */
#define dht_dpin A0
byte bGlobalErr;
byte dht_dat[5];

void setup(){
InitDHT();
Serial.begin(9600);
delay(300);
Serial.println("Humidity and temperature\n\n");
delay(700);
}

void loop(){
  ReadDHT();
  switch (bGlobalErr){
     case 0:
 Serial.print("Current humdity = ");
 Serial.print(dht_dat[0], DEC);
 Serial.print(".");
 Serial.print(dht_dat[1], DEC);
 Serial.print("%  ");
 Serial.print("temperature = ");
 Serial.print(dht_dat[2], DEC);
 Serial.print(".");
 Serial.print(dht_dat[3], DEC);
 Serial.println("C  ");
        break;
     case 1:
        Serial.println("Error 1: DHT start condition 1 not met.");
        break;
     case 2:
        Serial.println("Error 2: DHT start condition 2 not met.");
        break;
     case 3:
        Serial.println("Error 3: DHT checksum error.");
        break;
     default:
        Serial.println("Error: Unrecognized code encountered.");
        break;
      }
  delay(800);
}

void InitDHT(){
   pinMode(dht_dpin,OUTPUT);
        digitalWrite(dht_dpin,HIGH);
}

void ReadDHT(){
bGlobalErr=0;
byte dht_in;
byte i;
digitalWrite(dht_dpin,LOW);
delay(20);

digitalWrite(dht_dpin,HIGH);
delayMicroseconds(40);
pinMode(dht_dpin,INPUT);
//delayMicroseconds(40);
dht_in=digitalRead(dht_dpin);

if(dht_in){
   bGlobalErr=1;
   return;
   }
delayMicroseconds(80);
dht_in=digitalRead(dht_dpin);

if(!dht_in){
   bGlobalErr=2;
   return;
   }
delayMicroseconds(80);
for (i=0; i<5; i++)
   dht_dat[i] = read_dht_dat();
pinMode(dht_dpin,OUTPUT);
digitalWrite(dht_dpin,HIGH);
byte dht_check_sum =
       dht_dat[0]+dht_dat[1]+dht_dat[2]+dht_dat[3];
if(dht_dat[4]!= dht_check_sum)
   {bGlobalErr=3;}
};

byte read_dht_dat(){
  byte i = 0;
  byte result=0;
  for(i=0; i< 8; i++){
      while(digitalRead(dht_dpin)==LOW);
      delayMicroseconds(30);
      if (digitalRead(dht_dpin)==HIGH)
     result |=(1<<(7-i));
    while (digitalRead(dht_dpin)==HIGH);
    }
  return result;
}


Программа выводит в монитор порта значение температуры



Datasheet: DHT11.pdf




Обсуждение на форуме





Copyright © R9AL 2018 Все права защищены

Рейтинг@Mail.ru Яндекс цитирования