久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2201|回復: 0
打印 上一主題 下一主題
收起左側

arduino 溫濕度傳感器dht11程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:806626 發表于 2020-7-22 10:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. //
  2. //    FILE: dht22.cpp
  3. // VERSION: 0.1.00
  4. // PURPOSE: DHT22 Temperature & Humidity Sensor library for Arduino
  5. //
  6. // DATASHEET:
  7. //
  8. // HISTORY:
  9. // 0.1.0 by Rob Tillaart (01/04/2011)
  10. // inspired by DHT11 library
  11. //

  12. #include "dht.h"

  13. #define TIMEOUT 10000

  14. /////////////////////////////////////////////////////
  15. //
  16. // PUBLIC
  17. //


  18. // return values:
  19. //  0 : OK
  20. // -1 : checksum error
  21. // -2 : timeout
  22. int dht::read11(uint8_t pin)
  23. {
  24.         // READ VALUES
  25.         int rv = read(pin);
  26.         if (rv != 0) return rv;

  27.         // CONVERT AND STORE
  28.         humidity    = bits[0];  // bit[1] == 0;
  29.         temperature = bits[2];  // bits[3] == 0;

  30.         // TEST CHECKSUM
  31.         uint8_t sum = bits[0] + bits[2]; // bits[1] && bits[3] both 0
  32.         if (bits[4] != sum) return -1;

  33.         return 0;
  34. }

  35. // return values:
  36. //  0 : OK
  37. // -1 : checksum error
  38. // -2 : timeout
  39. int dht::read22(uint8_t pin)
  40. {
  41.         // READ VALUES
  42.         int rv = read(pin);
  43.         if (rv != 0) return rv;

  44.         // CONVERT AND STORE
  45.         humidity    = word(bits[0], bits[1]) * 0.1;

  46.         int sign = 1;
  47.         if (bits[2] & 0x80) // negative temperature
  48.         {
  49.                 bits[2] = bits[2] & 0x7F;
  50.                 sign = -1;
  51.         }
  52.         temperature = sign * word(bits[2], bits[3]) * 0.1;


  53.         // TEST CHECKSUM
  54.         uint8_t sum = bits[0] + bits[1] + bits[2] + bits[3];
  55.         if (bits[4] != sum) return -1;

  56.         return 0;
  57. }

  58. /////////////////////////////////////////////////////
  59. //
  60. // PRIVATE
  61. //

  62. // return values:
  63. //  0 : OK
  64. // -2 : timeout
  65. int dht::read(uint8_t pin)
  66. {
  67.         // INIT BUFFERVAR TO RECEIVE DATA
  68.         uint8_t cnt = 7;
  69.         uint8_t idx = 0;

  70.         // EMPTY BUFFER
  71.         for (int i=0; i< 5; i++) bits[i] = 0;

  72.         // REQUEST SAMPLE
  73.         pinMode(pin, OUTPUT);
  74.         digitalWrite(pin, LOW);
  75.         delay(20);
  76.         digitalWrite(pin, HIGH);
  77.         delayMicroseconds(40);
  78.         pinMode(pin, INPUT);

  79.         // GET ACKNOWLEDGE or TIMEOUT
  80.         unsigned int loopCnt = TIMEOUT;
  81.         while(digitalRead(pin) == LOW)
  82.                 if (loopCnt-- == 0) return -2;

  83.         loopCnt = TIMEOUT;
  84.         while(digitalRead(pin) == HIGH)
  85.                 if (loopCnt-- == 0) return -2;

  86.         // READ THE OUTPUT - 40 BITS => 5 BYTES
  87.         for (int i=0; i<40; i++)
  88.         {
  89.                 loopCnt = TIMEOUT;
  90.                 while(digitalRead(pin) == LOW)
  91.                         if (loopCnt-- == 0) return -2;

  92.                 unsigned long t = micros();

  93.                 loopCnt = TIMEOUT;
  94.                 while(digitalRead(pin) == HIGH)
  95.                         if (loopCnt-- == 0) return -2;

  96.                 if ((micros() - t) > 40) bits[idx] |= (1 << cnt);
  97.                 if (cnt == 0)   // next byte?
  98.                 {
  99.                         cnt = 7;   
  100.                         idx++;      
  101.                 }
  102.                 else cnt--;
  103.         }

  104.         return 0;
  105. }
  106. //
  107. // END OF FILE
  108. //
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区国产 | 日韩在线观看视频一区 | 日韩在线 | 久久久久久久久国产 | 日日夜夜天天久久 | 在线欧美 | 午夜精品一区 | 国产精品激情在线 | 精品亚洲二区 | 婷婷丁香在线视频 | 九九亚洲| 国产综合视频 | 国产午夜精品一区二区三区嫩草 | 亚欧精品一区 | a在线视频| 欧美综合国产精品久久丁香 | 欧美亚洲视频 | 亚洲毛片 | h视频在线免费看 | 日韩中文字幕 | 亚洲视频免费观看 | 欧美精品乱码久久久久久按摩 | 国产黄色在线观看 | 99久久久久 | 亚洲视频在线观看 | 国产精品美女久久久 | 精品久久久久久久久久久 | 欧美一级免费看 | 久久高清 | 色就干| 午夜免费观看体验区 | www.伊人.com | 日韩精品一区中文字幕 | www.99精品 | 最新国产在线 | 午夜精品久久久久久久久久久久久 | 日韩另类 | 久久国产精品一区二区三区 | 91精品国产91久久久久久 | 国产不卡一 | 亚洲精品福利在线 |