Arduino&Proteus 8 Professional——(超声波测距&气压类传感器测温测压)for Neuedu

29 篇文章 1 订阅
18 篇文章 0 订阅

练习:
超声波测距&气压类传感器测温测压后,通过上位机显示
提交两个代码部分:
1.底层ardiuno程序 txt C语言代码
2.Qt工程 (cpp,h,ui等)

源代码资源(点击此处下载)


Demo.cpp


#include "demo.h"
#include "ui_demo.h"
#include <QSerialPort>
#include <QSerialPortInfo>

Demo::Demo(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Demo)
{
    ui->setupUi(this);//创建窗口界面
    //检测电脑系统的串口名字
    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){
        QSerialPort serial;
        serial.setPort(info);//遍历的串口信息设置到串口对象中,包含名字,波特率等等
        ui->com->addItem(serial.portName());
    }

}

Demo::~Demo()
{
    delete ui;
}

void Demo::on_pushButton_clicked()
{
    //串口对象如果想连接通信,则需要设置基本参数
    //创建窗口对象----通信不结束,对象要一致保持存在,堆内存
    serial = new QSerialPort;
    //设置串口名
    serial->setPortName(ui->com->currentText());
    //设置波特率
    serial->setBaudRate(ui->comboBox_2->currentText().toInt());
    //设置数据位
    switch(ui->comboBox_3->currentIndex()){
        case 8:
          serial->setDataBits(QSerialPort::Data8);
          break;
    }
    //设置校验位
    switch(ui->comboBox_4->currentIndex()){
        case 0:
          serial->setParity(QSerialPort::NoParity);
          break;
    }
    //设置停止位
    switch(ui->comboBox_5->currentIndex()){
        case 1:
          serial->setStopBits(QSerialPort::OneStop);
          break;
    }

    serial->open(QIODevice::ReadWrite);

    connect(serial,SIGNAL(readyRead()), this, SLOT(ReadData()));//打开串口操作------数据显示的连接
}

void Demo::ReadData(){

    //在富文本框中显示数据
    QByteArray buf;
    buf = serial->readAll();
    if(!buf.isEmpty()){
        QString str = ui->textEdit->toPlainText();
        QString str2 = ui->textEdit2->toPlainText();
        QString str3 = ui->textEdit3->toPlainText();

        str += buf;
        ui->textEdit->clear();//清除界面上次显示的
        ui->textEdit->append(str.mid((str.length())-14,4));

        str2 += buf;
        ui->textEdit2->clear();//清除界面上次显示的
        ui->textEdit2->append(str2.mid((str2.length())-10,6));

        str3 += buf;
        ui->textEdit3->clear();//清除界面上次显示的
        ui->textEdit3->append(str3.right(4));}

        buf.clear();//清除缓存区
}


main.cpp


#include "demo.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Demo w;
    w.show();// 窗口显示
    return a.exec();
}


.ino


#include <SFE_BMP180.h>
SFE_BMP180 pressure;
double dis;
void setup() {
  pressure.begin();
  pinMode(2, OUTPUT);
  pinMode(3, INPUT);
  Serial.begin(9600);
}

void loop() {
  char status;
  double T;
  double P;
  status = pressure.startTemperature(); //开启温度计算
  if(0 != status){
    delay(status);//等待延时
    status = pressure.getTemperature(T);//获取温度值存入T中
    if(0 != status){
      Serial.print(T,1);
    }

  status = pressure.startPressure(3); //开启压力计算
  if(0 != status){
    delay(status);//等待延时
    status = pressure.getPressure(P,T);//获取压力值存入T中
    if(0 != status){
      Serial.print(P,1);
    }}}
  
  pinMode(2, OUTPUT);
  digitalWrite(2,LOW);
  delayMicroseconds(10);
  digitalWrite(2,HIGH);
  delayMicroseconds(10);
  digitalWrite(2,LOW);
  dis = pulseIn(3,1);
  dis = dis / 57;
  Serial.print(dis,1);
  delay(1500);
}

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GodOuO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值