树莓派驱动DHT22

                                            树莓派-DHT22测量湿度

       一般的温湿度传感器有dht11和dht22,dht11比较便宜,dht22比dht11贵好几倍,自然测量的准确度肯定是dht22高一些。追求更高精准度的可以使用SHT1x。

一、DHT22介绍

如图,一个dht22温湿度传感器

                               

商家卖的一般都是这种已经封装好了的,三个针脚(一个vcc,一个gnd,一个data):

                             

二、硬件连接

接线很简单:

Vcc接树莓派3.3v即1号针脚,Gnd接树莓派gnd,Data随便接一个GPIO脚,我接的是GPIO4。

                                

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用Qt编写的DHT11传感器驱动代码,可以通过调用该驱动代码,获取DHT11传感器的温湿度数据: DHT11.h文件 ```c++ #ifndef DHT11_H #define DHT11_H #include <QObject> #include <wiringPi.h> class DHT11 : public QObject { Q_OBJECT public: explicit DHT11(QObject *parent = nullptr); public slots: void readData(); signals: void humidityAndTemperature(double humidity, double temperature); private: int dht11_val[5]={0,0,0,0,0}; }; #endif // DHT11_H ``` DHT11.cpp文件 ```c++ #include "DHT11.h" #include <iostream> using namespace std; #define DHT11PIN 7 DHT11::DHT11(QObject *parent) : QObject(parent) { if(wiringPiSetup()==-1) exit(1); } void DHT11::readData() { unsigned char lststate=HIGH; unsigned char counter=0; unsigned char j=0,i; for(i=0;i<5;i++) dht11_val[i]=0; pinMode(DHT11PIN,OUTPUT); digitalWrite(DHT11PIN,LOW); delay(18); digitalWrite(DHT11PIN,HIGH); delayMicroseconds(40); pinMode(DHT11PIN,INPUT); for(i=0;i<85;i++) { counter=0; while(digitalRead(DHT11PIN)==lststate) { counter++; delayMicroseconds(1); if(counter==255) break; } lststate=digitalRead(DHT11PIN); if(counter==255) break; if((i>=4)&&(i%2==0)) { dht11_val[j/8]<<=1; if(counter>16) dht11_val[j/8]|=1; j++; } } if((j>=40)&&(dht11_val[4]==((dht11_val[0]+dht11_val[1]+dht11_val[2]+dht11_val[3])& 0xff))) { double humidity = dht11_val[0] + dht11_val[1] * 0.1; double temperature = dht11_val[2] + dht11_val[3] * 0.1; emit humidityAndTemperature(humidity, temperature); } else cout << "Invalid Data!!" << endl; } ``` 在DHT11类中,实现了一个readData()函数,用于读取DHT11传感器的温湿度数据。在读取完数据后,通过信号humidityAndTemperature(),将温湿度数据发送出去。在主程序中,可以通过连接该信号,实现对温湿度数据的获取。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值