• 大小: 11KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-12-18
  • 语言: 其他
  • 标签: DHT11  

资源简介

DHT11 21 22库文件

资源截图

代码片段和文件信息

/* DHT library 

MIT license*/

#include “DHT.h“

DHT::DHT(uint8_t pin uint8_t type uint8_t count) {
  _pin = pin;
  _type = type;
  _count = count;
  firstreading = true;
}

void DHT::begin(void) {
  // set up the pins!
  pinMode(_pin INPUT);
  digitalWrite(_pin HIGH);
  _lastreadtime = 0;
}

//boolean S == Scale.  True == Farenheit; False == Celcius
float DHT::readTemperature(bool S) {
  float f;

  if (read()) {
    switch (_type) {
    case DHT11:
      f = data[2];
      if(S)
       f = convertCtoF(f);
      
      return f;
    case DHT22:
    case DHT21:
      f = data[2] & 0x7F;
      f *= 256;
      f += data[3];
      f /= 10;
      if (data[2] & 0x80)
f *= -1;
      if(S)
f = convertCtoF(f);

      return f;
    }
  }
  return NAN;
}

float DHT::convertCtoF(float c) {
return c * 9 / 5 + 32;
}

float DHT::convertFtoC(float f) {
  return (f - 32) * 5 / 9; 
}

float DHT::readHumidity(void) {
  float f;
  if (read()) {
    switch (_type) {
    case DHT11:
      f = data[0];
      return f;
    case DHT22:
    case DHT21:
      f = data[0];
      f *= 256;
      f += data[1];
      f /= 10;
      return f;
    }
  }
  return NAN;
}

float DHT::computeHeatIndex(float tempFahrenheit float percentHumidity) {
  // Adapted from equation at: https://github.com/adafruit/DHT-sensor-library/issues/9 and
  // Wikipedia: http://en.wikipedia.org/wiki/Heat_index
  return -42.379 + 
           2.04901523 * tempFahrenheit + 
          10.14333127 * percentHumidity +
          -0.22475541 * tempFahrenheit*percentHumidity +
          -0.00683783 * pow(tempFahrenheit 2) +
          -0.05481717 * pow(percentHumidity 2) + 
           0.00122874 * pow(tempFahrenheit 2) * percentHumidity + 
           0.00085282 * tempFahrenheit*pow(percentHumidity 2) +
          -0.00000199 * pow(tempFahrenheit 2) * pow(percentHumidity 2);
}


boolean DHT::read(void) {
  uint8_t laststate = HIGH;
  uint8_t counter = 0;
  uint8_t j = 0 i;
  unsigned long currenttime;

  // Check if sensor was read less than two seconds ago and return early
  // to use last reading.
  currenttime = millis();
  if (currenttime < _lastreadtime) {
    // ie there was a rollover
    _lastreadtime = 0;
  }
  if (!firstreading && ((currenttime - _lastreadtime) < 2000)) {
    return true; // return last correct measurement
    //delay(2000 - (currenttime - _lastreadtime));
  }
  firstreading = false;
  /*
    Serial.print(“Currtime: “); Serial.print(currenttime);
    Serial.print(“ Lasttime: “); Serial.print(_lastreadtime);
  */
  _lastreadtime = millis();

  data[0] = data[1] = data[2] = data[3] = data[4] = 0;
  
  // pull the pin high and wait 250 milliseconds
  digitalWrite(_pin HIGH);
  delay(250);

  // now pull it low for ~20 milliseconds
  pinMode(_pin OUTPUT);
  digitalWrite(_pin LOW);
  delay(20);
  noInterrupts();
  digitalWrite(_pin HIGH);
  delayMicroseconds(40);
  pinMode(_pin INPUT);

  // read in timings
  for ( i=0; i< MAXTIMINGS; i++) {
    counter = 0;
    while (

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-08-05 15:12  temperature-and-humidity-sensor-AM2301-master\
     文件         177  2014-08-05 15:12  temperature-and-humidity-sensor-AM2301-master\.gitignore
     文件        3980  2014-08-05 15:12  temperature-and-humidity-sensor-AM2301-master\DHT.cpp
     文件         735  2014-08-05 15:12  temperature-and-humidity-sensor-AM2301-master\DHT.h
     目录           0  2014-08-05 15:12  temperature-and-humidity-sensor-AM2301-master\DHTtester\
     文件        2262  2014-08-05 15:12  temperature-and-humidity-sensor-AM2301-master\DHTtester\DHTtester.ino
     文件       18026  2014-08-05 15:12  temperature-and-humidity-sensor-AM2301-master\LICENSE
     文件         138  2014-08-05 15:12  temperature-and-humidity-sensor-AM2301-master\README.md

评论

共有 条评论