典中典之西电A测-气压测控仿真系统

兄弟,如果你看到这篇,只能说明你A测也挂了,没办法,哥们太菜了,抄的太假过不了你电有些老师的慧眼

这坨🐕⑩我先吃为敬

环境搭建可以参考这个兄弟的博客

一、题目要求

实现功能:使用 Arduino UNO 微控制器,搭建一个 PC 上位机远程气压检测控制
系统。
在这里插入图片描述

功能:Arduino UNO(Atmega328P)通过串行接口组件与上位机 PC 进行双向
通信,PC 机用串口调试助手软件向 Arduino UNO 发送学生自己的学号,Arduino
UNO 收到后在 LCD 上显示学生的学号,并且向 PC 机发送当前的气压值。PC
机上的串口调试助手软件接收窗口显示收到的气压值。
Arduino UNO 控制驱动直流电机,当环境气压等于或高于预定的气压((860+
学号末位数)hPa)时,启动直流电机转动;当环境气压低于预定的气压((860+
学号末位数)hPa)时,直流电机停止转动。同时,实时环境气压在 LCD 和 PC
机的串口调试助手软件接收窗口显示。如:学生学号末位数为 5,手动增加气压
等于或超过设定的气压值 865 hPa(860+5=865)时,驱动直流电机开始转动。
LCD 第一行显示 ID:学号,第二行显示 PRESS:气压值
PC 机串口调试助手软件发送窗口显示学号
PC 机串口调试助手软件接收窗口显示 Pressure:气压值

二、设计思路

此电路可以在一个密封环境中维持低于865hPa的气压值,当BMP180检测到气压高于或者等于此值时电机开始转动,往外抽气,当气压低于此值时电机停止转动抽气
可以考虑应用于维持稳压的环境比如低压进行的化学反应

放拟🐎什么够皮呢

三、仿真结果展示

我的学号是20009101015,最后一位是5,那么使电机转动的气压阈值是865,也就是说气压大于等于865时电机转动,气压小于865时停止转动
计算预定值,放上你软件仿真结果截图,包含直流电机停止时和启动时的LCD和PC机串口调试助手软件发送和接收窗口的显示结果,传感器数值、电机转速等;简单地说明和分析仿真结果,证明自己的测试过程。
我实验使用串口调试软件为XCOM,其发送和接收位于同一窗口中
最初Atmega328P启动时,在com口打印了我自定义的调试信息,表明bmp传感器已经注册,此时传感器设置初始压强为860,液晶显示器无显示,电机不转动,程序会阻塞等待com的消息
在这里插入图片描述

于com口发送学号20009101015后,串口接到Pressure:860信息,液晶显示器第一行打印ID:20009101015,第二行打印压强PRESS:860,由于压强没有超过865,电机不会转动
在这里插入图片描述

手动上调bmp传感器的压强数值到865,达到阈值,电机开始转动,转速从0开始增大
在这里插入图片描述

四、参考文献

Adafruit_BMP085.h

西电A测:串口通信仿真-CSDN博客

五、程序设计

在这里插入图片描述

#include <Wire.h>
#include <Adafruit_BMP085.h>  
#include <LiquidCrystal.h>  // LCD控制相关库
#define EMPIN 7 //电机使用io7口
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  // 初始化LCD 
Adafruit_BMP085 bmp;  //这位更是重量级
String str1 = "ID:";  
String str2 = "";
String str3 = "";
String PRE = "PRESS:";
String Pre = "Pressure:";
String id;
int len;
int last = 0;
int pressure_limit;
int pressure_real;
int pressure_real_last;
int one_time_flag = false;
void setup() {//setup只会在最开始执行一次,因此各种初始化,获取学号适合放在这里
  Serial.begin(9600);  // 初始化串口,设置波特率为9600
  lcd.begin(16, 2);    //初始化1液晶显示器有6列2行
  pinMode(EMPIN, OUTPUT);  // 设置连接直流电机引脚工作模式

  id = getInput();
  str1 += id;
  lcd.setCursor(0, 0);
  lcd.println(str1);
  len = id.length();
  last = id.substring(len - 3, len - 2).toInt();
  // Serial.println(last);
  pressure_limit = 860 + last;
  pressure_real_last = 0;
}
String getInput() {
  Serial.flush();
  while (Serial.available() == 0);
  delay(100);
  return Serial.readString();
}
void loop() {//loop会一直循环执行,适合启动后执行重复的操作,可以在其中定义并检查flag避免重复
  pressure_real=bmp.readPressure()/100;
  if (pressure_real != pressure_real_last) {//pressure_real_last是个flag,只有实时温度变化时才会刷新液晶屏和com口
    pressure_real_last = pressure_real;
    str2 = PRE + String(pressure_real);
    str3 = Pre + String(pressure_real);
    lcd.setCursor(0, 1);
    lcd.print(str2);
    Serial.println(str3);
    if (pressure_real >= pressure_limit) {
      digitalWrite(EMPIN, HIGH);
    } else {
      digitalWrite(EMPIN, LOW);
    }
  }
  delay(100);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/429509.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动态规划:LeetCode第10题 正则表达式匹配

题目&#xff1a; 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。 . 匹配任意单个字符* 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s的&#xff0c;而不是部分字符串。 示例 1&#xff1a; …

C语言文件操作,linux文件操作,文件描述符,linux下一切皆文件,缓冲区,重定向

目录 C语言文件操作 如何打开文件以及打开文件方式 读写文件 关闭文件 Linux系统下的文件操作 open 宏标志位 write&#xff0c;read&#xff0c;close&#xff0c;lseek接口 什么是当前路径&#xff1f; linux下一切皆文件 文件描述符 文件描述符排序 C语言文件操…

【Linux从青铜到王者】进程信号

——————————————————————————————————————————— 信号入门 在了解信号之前有许多要理解的相关概念 我们可以先通过一个生活例子来初步认识一下信号 1.生活角度的信号 你在网上买了很多件商品&#xff0c;再等待不同商品快递的到来…

达梦、金仓、南大、瀚高、优炫:从社区建设看企业技术自信心

正文约950字&#xff0c;预计阅读时间2分钟 国产技术厂商在面对自身产品问题时&#xff0c;往往保持回避态度&#xff0c;不愿公之于众&#xff0c;主要原因有2方面&#xff1a; 1&#xff0c;产品技术层面问题较多&#xff0c;如某些根本性缺陷难以攻克&#xff0c;或问题发…

Python爬虫实战(基础篇)—13获取《人民网》【最新】【国内】【国际】写入Word(附完整代码)

文章目录 专栏导读背景测试代码分析请求网址请求参数代码测试数据分析利用lxml+xpath进一步分析将获取链接再获取文章内容测试代码写入word完整代码总结专栏导读 🔥🔥本文已收录于《Python基础篇爬虫》 🉑🉑本专栏专门针对于有爬虫基础准备的一套基础教学,轻松掌握Py…

vue 安装各种问题

新下载了个项目模板&#xff0c;安装包就遇到了各种各样问题 电脑&#xff1a;mac 使用npm i 等命令一直安装项目&#xff0c;然后一直报错 2534 info run canvas2.11.2 install node_modules/canvas node-pre-gyp install --fallback-to-build --update-binary 2535 info r…

Tomcat+Nginx的动静分离

1.反向代理多机 实验&#xff1a;Nginx要开启upstream(负载均衡)、location(url链接)、proxy_pass(反向代理) 配置&#xff1a;7-3做代理服务器&#xff1b;7-1 和 7-2做Tomcat服务器 关闭防火墙和selinux 1.准备配置 7-3安装nginx&#xff1b;7-1 和 7-2安装Tomcat&#xff…

Re61:读论文 PRP Get an A in Math: Progressive Rectification Prompting

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称&#xff1a;Get an A in Math: Progressive Rectification Prompting ArXiv网址&#xff1a;https://arxiv.org/abs/2312.06867 官方实现网站&#xff1a;PRP 官方代码&#xff1a;https://github.…

iOS 17.0 UIGraphicsBeginImageContextWithOptions 崩溃处理

在升级到iOS17后你会发现&#xff0c;之前版本运行的很好&#xff0c;这个版本突然会出现一个运行闪退。报错日志为*** Assertion failure in void _UIGraphicsBeginImageContextWithOptions(CGSize, BOOL, CGFloat, BOOL)(), UIGraphics.m:410 跟踪到具体的报错位置如下所示&a…

闰年导致的哪些 Bug

每次闰年对程序员们都是一个挑战&#xff0c;平时运行好好的系统&#xff0c;在 02-29 这一天&#xff0c;好像就会有各种毛病。 虽然&#xff0c;提前一天&#xff0c;领导们都会提前给下面打招呼。但是&#xff0c;不可避免的&#xff0c;今天公司因为闰年还是有一些小故障。…

Tomcat(二) 动静分离

一、(TomcatNginx)动静分离 1、单机反向代理 利用 nginx 反向代理实现全部转发至指定同一个虚拟主机 客户端curl www.a.com 访问nginx服务&#xff0c;nginx服务通过配置反向代理proxy_pass www.a.com:8080&#xff0c;最终客户端看到的是www.a.com 实验中&#xff1a;7-3 做客…

码农世界:从入门到高手的成长攻略

&#x1f468;‍&#x1f4bb;&#x1f469;‍&#x1f4bb; 各位编程爱好者&#xff0c;欢迎来到现实而又充满挑战的码农世界。在这里&#xff0c;我们将一起探索一条如何从入门走向精通&#xff0c;最终在IT行业中找到自己位置的道路。准备好笔记本和热情&#xff0c;让我们携…

速通C语言第十三站 预处理

系列文章目录 速通C语言系列 速通C语言第一站 一篇博客带你初识C语言 http://t.csdn.cn/N57xl 速通C语言第二站 一篇博客带你搞定分支循环 http://t.csdn.cn/Uwn7W 速通C语言第三站 一篇博客带你搞定函数 http://t.csdn.cn/bfrUM 速通C语言第四站 一篇博客带…

STM32 NAND FLASH知识点

1.NAND FLASH的简介 NAND FLASH 的概念是由东芝公司在 1989 年率先提出&#xff0c;它内部采用非线性宏单元模式&#xff0c;为固态大容量内存的实现提供了廉价有效的解决方案。 NAND FLASH 存储器具有容量较大&#xff0c;改写速度快等优点&#xff0c;适用于大量数据的存储&…

VR 全景模式OpenGL原理

VR 全景模式OpenGL原理 VR 全景模式原理 VR 全景模式原理将画面渲染到球面上&#xff0c;相当于从球心去观察内部球面&#xff0c;观察到的画面 360 度无死角&#xff0c;与普通播平面渲染的本质区别在渲染图像部分&#xff0c;画面渲染到一个矩形平面上&#xff0c;而全景需…

字节跳动发布SDXL-Lightning模型,支持WebUI与ComfyUI双平台,只需一步生成1024高清大图!

字节跳动发布SDXL-Lightning模型,WebUI与ComfyUI平台,只需一步生成1024高清大图,需要的步数比 LCM 更低了! 什么是SDXL-Lightning: SDXL-Lightning 是一种快速的文本到图像生成模型。SDXL-Lightning模型的核心优势在于其创新的蒸馏策略,它可以通过几个步骤生成高质量的 1…

红黑树的简单介绍

红黑树 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树确保没有一条路径会比其他路径长出俩倍&#x…

服务器出现故障如何恢复数据?

服务器数据恢复案例之服务器raid6中3块硬盘离线导致阵列崩溃的数据恢复案例 服务器故障&#xff1a; 服务器中有一组由6块盘组建的 RAID6&#xff0c;这台网站服务器上运行MYSQL数据库和存放其它类型的文件。该组raid中有两块磁盘离线&#xff0c;管理员没有及时更换磁盘&#…

#QT(智能家居界面-界面切换)

1.IDE&#xff1a;QTCreator 2.实验 3.记录 &#xff08;1&#xff09;创建一个新界面&#xff08;UI界面&#xff09; &#xff08;2&#xff09;可以看到新加入一个ui文件&#xff0c;双击打开&#xff0c;设置窗口大小与登录界面一致 &#xff08;3&#xff09;加入几个PUS…

Linux 运维:CentOS/RHEL防火墙和selinux设置

Linux 运维&#xff1a;CentOS/RHEL防火墙和selinux设置 一、防火墙常用管理命令1.1 CentOS/RHEL 7系统1.2 CentOS/RHEL 6系统 二、临时/永久关闭SELinux2.1 临时更改SELinux的执行模式2.2 永久更改SELinux的执行模式 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;…