資源簡介
設備和環境:
1、樹莓派3b;
2、ubuntu mate系統 linux內核是4.4.38;
3、DHT11傳感器;
4、Qt 5.5.1。
實現的功能:
1、讀取DHT11傳感器的數據,并將溫濕度顯示在窗口中。

代碼片段和文件信息
#include?“dth11.h“
#include?“ui_dth11.h“
#include?
#include?
DTH11::DTH11(QWidget?*parent)?:
????QWidget(parent)
????ui(new?Ui::DTH11)
{
????ui->setupUi(this);
????qtimer?=?new?QTimer(this);
????connect(qtimer?SIGNAL(timeout())?this?SLOT(data_display()));
}
DTH11::~DTH11()
{
????delete?ui;
}
void?DTH11::dht11_init()
{
????printf(“Use?GPIO1?to?read?data!\n“);
????if?(-1?==?wiringPiSetup())?{
????printf(“Setup?wiringPi?failed!“);
????return;
????}
????pinMode(pinNumber?OUTPUT);?//?set?mode?to?output
????digitalWrite(pinNumber?1);?//?output?a?high?level
????printf(“Enter?OS-------\n“);
????qtimer->start(100);
}
uint8?DTH11::read_dht11_dat()
{
????uint8?crc;
????uint8?i;
????pinMode(pinNumberOUTPUT);?//?set?mode?to?output
????digitalWrite(pinNumber?0);?//?output?a?high?level
????delay(25);
????digitalWrite(pinNumber?1);?//?output?a?low?level
????pinMode(pinNumber?INPUT);?//?set?mode?to?input
????pullUpDnControl(pinNumberPUD_UP);
????delayMicroseconds(27);
????if(digitalRead(pinNumber)==0)?//SENSOR?ANS
????{
????????while(!digitalRead(pinNumber));?//wait?to?high
????????for(i=0;i<32;i++)
????????{
????????????while(digitalRead(pinNumber));?//data?clock?start
????????????while(!digitalRead(pinNumber));?//data?start
????????????delayMicroseconds(HIGH_TIME);
????????????databuf*=2;
????????????if(digitalRead(pinNumber)==1)?//1
????????????{
????????????????databuf++;
????????????}
????????}
????????for(i=0;i<8;i++)
????????{
????????????while(digitalRead(pinNumber));?//data?clock?start
????????????while(!digitalRead(pinNumber));?//data?start
????????????delayMicroseconds(HIGH_TIME);
????????????crc*=2;
????????????if(digitalRead(pinNumber)==1)?//1
????????????{
????????????????crc++;
????????????}
????????}
????????return?1;
????}
????else
????{
????????return?0;
????}
}
void?DTH11::data_display()
{
????pinMode(pinNumberOUTPUT);?//?set?mode?to?output
????digitalWrite(pinNumber?1);?//?output?a?high?level
????delay(3000);
????if(read_dht11_dat())
????{
????????QString?tmp?=?QString::number((databuf>>8)&0xff?10);
????????QString?rh?=?QString::number((databuf>>24)&0xff?10);
????????ui->lb_tmpdisplay->setText(tmp);
????????ui->lb_rhdisplay->setText(rh);
//????????printf(“Congratulations?!?Sensor?data?read?ok!\n“);
//????????printf(“RH:%d.%d\n“(databuf>>24)&0xff(databuf>>16)&0xff);
//????????printf(“TMP:%d.%d\n“(databuf>>8)&0xffdatabuf&0xff);
????????databuf=0;
????}
????else
????{
????????ui->lb_tmpdisplay->setText(“Sorry!?Sensor?dosent?ans!“);
//????????printf(“Sorry!?Sensor?dosent?ans!\n“);
????????databuf=0;
????}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2606??2018-01-03?08:02??dth11.cpp
?????文件?????????630??2018-01-03?08:02??dth11.h
?????文件?????????367??2018-01-03?08:02??DTH11.pro
?????文件???????18706??2018-01-03?08:02??DTH11.pro.user
?????文件????????1404??2018-01-03?08:02??dth11.ui
?????文件?????????182??2018-01-03?08:02??main.cpp
?????目錄???????????0??2018-01-03?16:21??output\
?????文件??????643016??2018-01-03?08:02??output\DTH11
?????文件??????416004??2018-01-03?08:02??output\dth11.o
?????文件??????435040??2018-01-03?08:02??output\main.o
?????文件???????17387??2018-01-03?08:02??output\Makefile
?????文件????????3208??2018-01-03?08:02??output\moc_dth11.cpp
?????文件??????241240??2018-01-03?08:02??output\moc_dth11.o
?????文件????????2856??2018-01-03?08:02??output\ui_dth11.h
評論
共有 條評論