找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5203|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

arduino控制的DHT11溫濕度傳感器程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:164146 發(fā)表于 2019-4-17 09:49 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
Arduino源程序:
  1. #define DHT11_PIN 0
  2. int Led = 8;
  3. int Buzzer = 7;
  4. byte read_dht11_dat()
  5. {
  6.         byte i = 0;
  7.         byte result = 0;
  8.         for (i = 0; i<8; i++)
  9.         {
  10.                 while (!(PINC&_BV(DHT11_PIN)));
  11.                 delayMicroseconds(30);
  12.                 if (PINC&_BV(DHT11_PIN))
  13.                         result |= (1 << (7 - i));
  14.                 while ((PINC&_BV(DHT11_PIN)));
  15.         }
  16.         return result;
  17. }
  18. void setup()
  19. {
  20.         DDRC |= _BV(DHT11_PIN);
  21.         PORTC |= _BV(DHT11_PIN);
  22.         pinMode(Led, OUTPUT);
  23.         pinMode(Buzzer, OUTPUT);
  24.         Serial.begin(19200);
  25.         Serial.println("Ready");
  26. }
  27. void loop()
  28. {
  29.         byte dht11_dat[5];
  30.         byte dht11_in;
  31.         byte i;
  32.         PORTC &= ~_BV(DHT11_PIN);
  33.         delay(18);
  34.         PORTC |= _BV(DHT11_PIN);
  35.         delayMicroseconds(40);
  36.         DDRC &= ~_BV(DHT11_PIN);
  37.         delayMicroseconds(40);
  38.         dht11_in = PINC & _BV(DHT11_PIN);
  39.         if (dht11_in)
  40.         {
  41.                 Serial.println("dht11 start condition 1 not met");
  42.                 return;
  43.         }
  44.         delayMicroseconds(80);
  45.         dht11_in = PINC & _BV(DHT11_PIN);
  46.         if (!dht11_in)
  47.         {
  48.                 Serial.println("dht11 start condition 2 not met");
  49.                 return;
  50.         }
  51.         delayMicroseconds(80);
  52.         for (i = 0; i<5; i++)
  53.                 dht11_dat[i] = read_dht11_dat();
  54.         DDRC |= _BV(DHT11_PIN);
  55.         PORTC |= _BV(DHT11_PIN);
  56.         byte dht11_check_sum = dht11_dat[0] + dht11_dat[1] + dht11_dat[2] + dht11_dat[3];
  57.         if (dht11_dat[4] != dht11_check_sum)
  58.         {
  59.                 Serial.println("DHT11 checksum error");
  60.         }
  61.         Serial.print("Current humdity= ");
  62.         Serial.print(dht11_dat[0], DEC);
  63.         Serial.print(".");
  64.         Serial.print(dht11_dat[1], DEC);
  65.         Serial.print("%");
  66.         Serial.print("temperature = ");
  67.         Serial.print(dht11_dat[2], DEC);
  68.         Serial.print(".");
  69.         Serial.print(dht11_dat[3], DEC);
  70.         Serial.println("C");
  71.         if (dht11_dat[0] == 25)
  72.                 digitalWrite(Led, HIGH);
  73.         else
  74.                 digitalWrite(Led, LOW);

  75.         if (dht11_dat[0] == 28)
  76.                 digitalWrite(Buzzer, LOW);
  77.         else
  78.                 digitalWrite(Buzzer, HIGH);
  79.         delay(2000);
  80. }
復(fù)制代碼

全部資料51hei下載地址:
arduino控制的DHT11溫濕度傳感器程序.zip (889 Bytes, 下載次數(shù): 34)

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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2019-4-17 14:42 | 只看該作者
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

板凳
ID:694033 發(fā)表于 2020-3-19 06:32 | 只看該作者
下個(gè)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表