典中典之西电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);  // 初始化串口,设置波特率为9600lcd.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);
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

账号管理支持批量测试资产可连接性,资产管理支持通过标签方式选择资产,JumpServer堡垒机v3.10.4 LTS版本发布

2024年3月4日&#xff0c;JumpServer开源堡垒机正式发布v3.10.4 LTS版本。JumpServer开源项目组将对v3.10 LTS版本提供长期的支持和优化&#xff0c;并定期迭代发布小版本。欢迎广大社区用户升级至v3.10 LTS最新版本&#xff0c;以获得更佳的使用体验。 在v3.10.4 LTS版本中&a…

ChromeDriver全版本下载教程

确定自己的Chrome版本 step1. 打开Chrome浏览器右上角的三个点&#xff0c;再点击设置 step2. 在设置中点击“关于Chrome”&#xff0c;圈起来的红框即为当前Chrome版本&#xff0c;我的版本就是121.0.6167.185 在json中查找自己对应ChromeDriver版本下载链接 一般教程会让你…

【树】【异或】【深度优先】【DFS时间戳】2322. 从树中删除边的最小分数

作者推荐 【二分查找】【C算法】378. 有序矩阵中第 K 小的元素 涉及知识点 树 异或 DFS时间戳 LeetCode2322. 从树中删除边的最小分数 存在一棵无向连通树&#xff0c;树中有编号从 0 到 n - 1 的 n 个节点&#xff0c; 以及 n - 1 条边。 给你一个下标从 0 开始的整数数组…

C++惯用法之RAII思想: 资源管理

C编程技巧专栏&#xff1a;http://t.csdnimg.cn/eolY7 目录 1.概述 2.RAII的应用 2.1.智能指针 2.2.文件句柄管理 2.3.互斥锁 3.注意事项 3.1.禁止复制 3.2.对底层资源使用引用计数法 3.3.复制底部资源(深拷贝)或者转移资源管理权(移动语义) 4.RAII的优势和挑战 5.总…

MATLAB:Image Processing Toolbox工具箱入门实战

目录 1.基本图像导入、处理和导出 2.实战项目一&#xff1a;利用imfindcircles()函数检测和测量图像中的圆形目标 1.基本图像导入、处理和导出 Basic Image Import, Processing, and Export- MATLAB & SimulinkThis example shows how to read an image into the worksp…

Java集合框架-Collection和Map

文章目录 Collection-单列集合特点ListArrayListLinkedListVecter SetHashSetTreeSet Map-键值对集合特点Map常用APIput添加细节remove Map的三种遍历方式1.通过键找值2.通过"键值对"3.Lambda表达式foreach源码 HashMap需求 为什么要使用泛型 泛型的优点1.集合中存储…

#QT(智能家居界面-布局)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a; 水平布局&#xff0c;垂直布局&#xff0c;栅格布局&#xff08;弹簧&#xff09; 界面自动调整 3.记录 注意弹簧不是拖拽拉长&#xff0c;而是使用栅格布局 运行发现窗口放大缩小可以自动调整 如果想要重新布局&#xff0c;需…

【PHP趣味技术】分分钟教会你轻松采集PDF文本内容 《重庆话真的太吃皮老!》

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享博主 &#x1f40b; 希望大家多多支持一下, 我们一起学习和进步&#xff01;&#x1f604; &#x1f3c5; 如果文章对你有帮助的话&#xff0c;欢迎评论 &#x1f4ac;点赞&a…

备忘 clang diagnostic 类的应用示例 ubuntu 22.04

系统的ncurses环境有些问题 通过源码安装了ncurses6.3后&#xff0c;才可以在 llvmort-18.1.rc4中编译通过示例&#xff1a; 1&#xff0c;折腾环境 ncurses-6.3$ ./configure ncurses-6.3$ make -j ncurses-6.3$ sudo make install sudo apt install libtinfo5 sudo…

使用Visual Studio 2022 创建lib和dll并使用

概述&#xff1a;对于一个经常写javaWeb的人来说,使用Visual Studio似乎没什么必要&#xff0c;但是对于使用ffi的人来说&#xff0c;使用c或c编译器&#xff0c;似乎是必不可少的&#xff0c;下面我将讲述如何用Visual Studio 2022 来创建lib和dll&#xff0c;并使用。 静态库…

ABAP - SALV教程12 显示图标和提示信息

ALV要求字段的值为图标的需求并不多见&#xff0c;一般都用于红黄绿灯&#xff0c;来表示单据的执行状态&#xff0c;添加图标的方式也可以实现红黄绿灯的功能&#xff0c;也可以参考SALV实现红黄绿灯这篇文章&#xff1a;http://t.csdnimg.cn/Dzx7x效果图SAVL列设置为图标图标…

434G数据失窃!亚信安全发布《勒索家族和勒索事件监控报告》

最新态势快速感知 最新一周全球共监测到勒索事件90起&#xff0c;与上周相比数量有所增加。 lockbit3.0仍然是影响最严重的勒索家族&#xff1b;alphv和cactus恶意家族也是两个活动频繁的恶意家族&#xff0c;需要注意防范。 Change Healthcare - Optum - UnitedHealth遭受了…

详细分析服务器自动重启原因(涉及Linux、Window)

目录 前言1. Linux2. Window 前言 对于服务器异常重启的问题&#xff0c;需要定位原因并解决&#xff0c;下次就不会重启 1. Linux 要查看Linux服务器自动重启的原因&#xff0c;可以执行以下步骤&#xff1a; 检查系统日志&#xff1a;Linux系统通常会记录系统事件和错误信…

vue3页面内容切换(类似登录、注册内容切换)

一、内容描述 页面有俩块内容&#xff0c;分别是验证码登录页面内容&#xff0c;账号密码登录页面内容。有俩种处理方式&#xff0c;一个是写俩个页面跳转使用&#xff0c;还有一种是一个页面俩个内容&#xff0c;切换的只是不同的内容&#xff0c;相同的内容保留。一般都是选择…

通过人工智能增强的对话建立有意义的联系

人工智能如何重塑我们的交流&#xff1f;2024年最新对话AI趋势 在技术和人类互动比以往任何时候都更加复杂地交织在一起的时代&#xff0c;人工智能增强的对话已成为建立有意义的联系的关键要素。 这种转变不仅关乎效率&#xff0c;还关乎效率。 这是为了丰富沟通的结构。 在这…

12. Nginx进阶-Location

简介 Nginx的三大区块 在Nginx中主要配置包括三个区块&#xff0c;结构如下&#xff1a; http { #协议级别include /etc/nginx/mime.types;default_type application/octet-stream;log_format main $remote_addr - $remote_user [$time_local] "$r…

(十五)【Jmeter】取样器(Sampler)之HTTP请求

简述 操作路径如下: HTTP请求 (HTTP Sampler): 作用:模拟发送HTTP请求并获取响应。配置:设置URL、请求方法、请求参数等参数。使用场景:测试Web应用程序的HTTP接口性能。优点:支持多种HTTP方法和请求参数,适用于大多数Web应用程序测试。缺点:功能较为基础,对于复杂…

42、网络编程/多点通信和域套接字通信模型20240304

一、多点通信之广播的收发端实现 1.广播发送端代码&#xff1a; #include<myhead.h>int main(int argc, const char *argv[]) {int sfdsocket(AF_INET,SOCK_DGRAM,0);//创建套接字if(sfd-1){perror("socket,error");return -1;}int broadcast1;//设置套接字广…

opencv VideoCapture

videocapture顾名思义视频捕捉&#xff0c;主要是从视频文件、摄像头或网络摄像头获取视频流数据&#xff0c;并将其作为一系列帧进行处理。 我们这里主要实现了获取项目文件夹下的1.mp4视频文件&#xff0c;然后经过灰度变化、均值滤波、边缘检测然后将视频显示出来 #include…

ruoyi-vue-plus4.X版本实现内嵌swagger文档(简单解决方法)

1.在common模块中添加pom依赖 <dependency><groupId>org.webjars</groupId><artifactId>swagger-ui</artifactId><version>4.15.5</version></dependency>结果如下&#xff1a; 2.在ResourcesConfig配置类的addResourceHandl…