• 大小: 614KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-28
  • 语言: 其他
  • 标签: 树莓派  

资源简介

设备和环境: 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

评论

共有 条评论