[UNO] 【UNO R3 SMD试用】+3.两种方式读取DHT11的温湿度值。

[复制链接]
425|3
 楼主 | 2018-3-7 17:27 | 显示全部楼层 |阅读模式
本帖最后由 看看小小说 于 2018-3-29 08:43 编辑

ARDUINO UNO R3 SMD

DHT11的文档这里就不放上来了,只要按照时序操作没有问题,这里我硬件借助的是MICOKIT的EXT板,引脚是D8。

1.自己编写DHT11驱动。
  1. int temp;//温度
  2. int humi;//湿度
  3. int check;//校对码
  4. unsigned int time_count;
  5. int dat[40] = {0};
  6. unsigned long time;

  7. #define pin 8

  8. void setup()
  9. {
  10.   // put your setup code here, to run once:
  11.   Serial.begin(9600);
  12. }

  13. void loop()
  14. {
  15.   // put your main code here, to run repeatedly:
  16. begin:
  17.   delay(2000);
  18. //设置2号接口模式为:输出
  19. //输出低电平20ms(>18ms)
  20. //输出高电平40μs
  21.   pinMode(pin,OUTPUT);
  22.   digitalWrite(pin,LOW);
  23.   delay(20);
  24.   digitalWrite(pin,HIGH);
  25.   delayMicroseconds(40);
  26.   digitalWrite(pin,LOW);
  27. //设置2号接口模式:输入
  28.   pinMode(pin,INPUT);
  29. //高电平响应信号
  30.   time_count=10000;
  31.   while(digitalRead(pin) != HIGH)
  32.   {
  33.     if(time_count-- == 0)
  34.     {
  35.     //如果长时间不返回高电平,输出个提示,重头开始。
  36.       Serial.println("HIGH");
  37.       goto begin;
  38.     }
  39.   }
  40. //低电平响应信号
  41.   time_count = 30000;
  42.   while(digitalRead(pin) != LOW)
  43.   {
  44.     if(time_count-- == 0)
  45.     {
  46.       // 如果长时间不返回低电平,输出个提示,重头开始。
  47.       Serial.println("LOW");
  48.       goto begin;
  49.     }
  50.   }
  51. //开始读取bit1-40的数值
  52.   for(int i=0;i<40;i++)
  53.   {
  54.     while(digitalRead(pin) == LOW)
  55.     {}
  56. //当出现高电平时,记下时间“time”
  57.     time = micros();
  58.     while(digitalRead(pin) == HIGH)
  59.     {}
  60. //当出现低电平,记下时间,再减去刚才储存的time
  61. //得出的值若大于50μs,则为‘1’,否则为‘0’
  62. //并储存到数组里去
  63.     if (micros() - time >50)
  64.     {
  65.       dat[i]=1;
  66.     }
  67.     else
  68.     {
  69.       dat[i]=0;
  70.     }
  71.   }

  72. //湿度,8位的bit,转换为数值
  73.   humi = dat[0]*128+dat[1]*64+dat[2]*32+dat[3]*16+dat[4]*8+dat[5]*4+dat[6]*2+dat[7];
  74. //温度,8位的bit,转换为数值
  75.   temp = dat[16]*128+dat[17]*64+dat[18]*32+dat[19]*16+dat[20]*8+dat[21]*4+dat[22]*2+dat[23];
  76. //校对码,8位的bit,转换为数值
  77.   check = dat[32]*128 + dat[33]*64+dat[34]*32+dat[35]*16+dat[36]*8+dat[37]*4+dat[38]*2+dat[39];
  78. //输出:温度、湿度、校对码
  79.   Serial.print("temp:");
  80.   Serial.println(temp);
  81.   Serial.print("humi:");
  82.   Serial.println(humi);
  83.   Serial.print("check:");
  84.   Serial.println(check);
  85. }
复制代码

运行结果如下


2.利用别人编好的库文件,点击下载,解压文件到IDE安装路径下的libraries文件夹,将里面的example文件复制到IDE安装路径下的example文件夹,打开IDE,点击项目栏,加载库项的管理库,回自动加载刚刚加入的库和DEMO,
这时候你就可以在示例里面看到DHT11的demo,打开,修改相应管脚,下载验证即可。

运行如下:

3.OVER

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2018-3-7 21:07 | 显示全部楼层
无图无真相
 楼主 | 2018-3-8 09:11 | 显示全部楼层

昨天上传数量限制了,今天已补上。
| 2018-3-21 08:18 | 显示全部楼层
看看小小说 发表于 2018-3-8 09:11
昨天上传数量限制了,今天已补上。

扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /4 下一条

快速回复 返回顶部 返回列表