【Proteus仿真】【STM32单片机】智能垃圾桶设计

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

本项目使用Proteus8仿真STM32单片机控制器,使用报警模块、LCD1602液晶模块、按键模块、人体红外传感器、HCSR04超声波、有害气体传感器、SG90舵机等。

主要功能:
系统运行后,LCD1602显示超声波检测距离和传感器采集有害气体浓度值极其阈值。
当感应到有人时,桶盖舵机开启,此时系统检测垃圾高度是否超限,如果超限,则开启压缩机打包,完成后蜂鸣器报警提示。当人离开,桶盖舵机关闭。如果有害气体浓度超限,蜂鸣器报警。
可通过按键K3进入阈值设置模式,K1和K2调节数据,K4确定。


二、软件设计

/*
作者:嗨小易(QQ:3443792007)*///系统数据获取
void sys_data_get(void)
{while(1){//获取距离sys_ctrl.dis=ultrasonicwave_measure();//获取有害气体浓度sys_ctrl.gas=pcf8591_read_adcvalue(0);sys_ctrl.gas=cal_map(sys_ctrl.gas,0,255,0,99);//检测有无人if(IRED==0)sys_ctrl.man=1;	else sys_ctrl.man=0;			break;}	
}//系统数据显示
void sys_data_show(void)
{while(1){//距离显示lcd1602_show_nums(4,0,sys_ctrl.dis,3,0);//气体浓度显示lcd1602_show_nums(4,1,sys_ctrl.gas,2,0);//有无人状态显示if(sys_ctrl.man==1)lcd1602_show_string(8,1,"Y");else lcd1602_show_string(8,1,"N");//距离阈值显示lcd1602_show_nums(13,0,sys_ctrl.dish,3,0);//气体阈值显示lcd1602_show_nums(13,1,sys_ctrl.gash,2,0);//阈值闪烁指示switch(sys_ctrl.mode){case 1://距离lcd1602_show_string(13,0,"   ");delay_ms(50);lcd1602_show_nums(13,0,sys_ctrl.dish,3,0);break;case 2://气体lcd1602_show_string(13,1,"  ");delay_ms(50);lcd1602_show_nums(13,1,sys_ctrl.gash,2,0);break;}break;			}
}//系统数据设置
void sys_data_set(void)
{u8 key=0;key=key_scan(0);//设置if(key==KEY3_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>2)sys_ctrl.mode=1;}//阈值设置模式if(sys_ctrl.mode!=0){//加if(key==KEY1_PRESS){switch(sys_ctrl.mode){case 1://距离sys_ctrl.dish++;if(sys_ctrl.dish>500)sys_ctrl.dish=0;break;case 2://气体sys_ctrl.gash++;if(sys_ctrl.gash>99)sys_ctrl.gash=0;break;}	}//减else if(key==KEY2_PRESS){switch(sys_ctrl.mode){case 1://距离sys_ctrl.dish--;if(sys_ctrl.dish<0)sys_ctrl.dish=500;break;case 2://气体sys_ctrl.gash--;if(sys_ctrl.gash<0)sys_ctrl.gash=99;break;}	}//确定else if(key==KEY4_PRESS){sys_ctrl.mode=0;	}	}
}//系统功能控制
void sys_fun_ctrl(void)
{static u8 oneflag=0;//如果红外检测到有人if(sys_ctrl.man==1){//打开桶盖舵机steer_control(2);//如果垃圾高度到达阈值,开启打包if(sys_ctrl.dis>sys_ctrl.dish){if(oneflag==0)//压缩机启动一次{oneflag=1;_dc_motor_zturn();delay_ms(1000);_dc_motor_stop();beep_alarm(100,2000);}	}else oneflag=0;}//如果红外未检测到有人else{//关闭桶盖舵机steer_control(0);		}//如果有害气体浓度高于阈值,报警if(sys_ctrl.gas>sys_ctrl.gash)beep_alarm(10,1000);
}

三、实验现象

B站演示视频:https://space.bilibili.com/444388619
在这里插入图片描述
在这里插入图片描述

联系作者

视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

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

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

相关文章

Spring基于xml注入bean的几种方式; Spring 框架中都用到了哪些设计模式;Spring的自动装配

文章目录 Spring基于xml注入bean的几种方式&#xff1a;Spring的自动装配&#xff1a;在Spring框架xml配置中共有5种自动装配&#xff1a;基于注解的方式&#xff1a; Spring 框架中都用到了哪些设计模式&#xff1f; Spring基于xml注入bean的几种方式&#xff1a; &#xff0…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于Fisher时段划分的配电网源网荷储多时间尺度协调优化调控策略》

这个标题涉及到电力系统领域的一些关键概念和方法。让我们逐步解读&#xff1a; 基于Fisher时段划分&#xff1a; "基于"表示这个策略或方法的核心基础是某个特定的理论或技术。"Fisher时段划分"可能指的是使用Fisher信息矩阵进行时间划分。Fisher信息矩阵…

居家适老化设计第三十条---卫生间之坐便

以上产品图片均来源于淘宝 侵权联系删除 在居家适老化中&#xff0c;马桶是非常重要的设施之一&#xff0c;它能够提供方便、安全、舒适的上厕所体验。以下是一些居家适老化中常见的马桶设计和功能&#xff1a;1. 高度合适&#xff1a;为了方便老年人坐起和站起&#xff0c;马…

Da-transunet:将空间和通道双重关注与Transformer u-net相结合用于医学图像分割

DA-TRANSUNET: INTEGRATING SPATIAL AND CHANNEL DUAL ATTENTION WITH TRANSFORMER U-NET FOR MEDICAL IMAGE SEGMENTATION 1、方法1.1 模型1.2 双注意力模块&#xff08;DA-Block&#xff09;1.2.1 PAM&#xff08; 位置注意力模块&#xff09;1.2.2 CAM&#xff08;通道注意力…

面试:Kubernetes相关问题

文章目录 Kubernetes的工作流程可以分为以下几个步骤&#xff1a;简述Kubernetes中的Deployment、StatefulSet、DaemonSet的区别在Kubernetes中&#xff0c;如何进行存储管理在Kubernetes中&#xff0c;如何实现滚动升级和回滚在Kubernetes中&#xff0c;如何进行日志和监控的管…

基于环形队列的生产者消费者模型线程池

目录 信号量 信号量是什么 信号量的操作 基于环形队列的生产者消费者模型 我们想怎么写这个模型 线程池 线程池的实现 线程的属性及方法 线程池的属性及方法 主线程 信号量 信号量也是通信的一种&#xff0c;前面在进程间通信的时候&#xff0c;我们说信号量到线程的…

NX二次开发UF_CURVE_ask_int_parms_sc 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_int_parms_sc Defined in: uf_curve.h int UF_CURVE_ask_int_parms_sc(tag_t int_curve_object, int * num_objects_set_1, tag_t * * object_set_1, int * num_object…

一文了解 StandardTokenizer 分词器,分词原理

一、StandardTokenizer简介 什么是StandardTokenizer&#xff1f; StandardTokenizer是HanLP中的一个分词器&#xff0c;也是默认的标准分词器。它基于词典和规则的方式对中文文本进行分词&#xff0c;将输入的句子切分成一个个独立的词语。 StandardTokenizer的主要特点如下…

Swing程序设计(6)边界布局,网格布局

文章目录 前言一、布局介绍 1.边界布局2.网格布局3.网格组布局.总结 前言 Swing程序中还有两种方式边界布局&#xff0c;网格布局供程序员使用。这两种布局方式更能体现出软件日常制作的排列布局格式。 一、布局介绍 1.BorderLayout边界布局 语法&#xff1a;new BorderLayout …

laravel8安装多应用多模块(笔记三)

先安装laravel8 Laravel 安装&#xff08;笔记一&#xff09;-CSDN博客 一、进入项目根目录安装 laravel-modules composer require nwidart/laravel-modules 二、 大于laravel5需配置provider&#xff0c;自动生成配置文件 php artisan vendor:publish --provider"Nwid…

windows cmd执行远程长脚本

背景 有时候我们想在未进行一些环境设置&#xff0c;或者工具使用者电脑中执行一段初始化脚本&#xff0c;为了简化使用者的理解成本&#xff0c;通常给使用者一段代码执行初始化电脑中的设置&#xff0c;尤其是这段初始化脚本比较长的时候。 脚本制作者 比如将需要执行的命…

【ARM CoreLink 系列 3.1 -- CCI-500 详细介绍 -上半部】

文章目录 1.1 CCI-500 介绍1.2 CCI-500 features 详细介绍1.2.1 Data Coherency between ACE Masters1.2.2 Quality of Service (QoS)1.2.3 (I/O) Coherency1.2.4 Crossbar Interconnect Functionality1.2.5 Performance Monitoring Unit (PMU)1.2.6 DVM Message Transport1.2.…

H5ke12--2--学生选课表格的编辑

方法1不可以修改的用label,如何按了哪一行 就会在下面有个文本显示可编辑的一行 方法2每一行后面都有一个编辑, 3对每一个修改,每一个td失去焦点都会有,直接到达我们服务器 注意 如果用span的每一个html元素都可以自己定义属性 Data-属性名,data-Address links也要给为span 1…

递归算法学习——二叉树的伪回文路径

1&#xff0c;题目 给你一棵二叉树&#xff0c;每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的&#xff0c;当它满足&#xff1a;路径经过的所有节点值的排列中&#xff0c;存在一个回文序列。 请你返回从根到叶子节点的所有路径中 伪回文 路径的数目。 示例…

软件设计中如何画各类图之二深入解析数据流图(DFD):系统设计与分析的关键视觉工具

目录 1 前言2 数据流图&#xff08;DFD&#xff09;的重要性3 数据流图的符号说明4 清晰的数据流图步骤4.1 确定系统边界4.2 识别数据流4.3 定义处理过程4.4 确认数据存储4.5 建立数据流动的连线4.6 细化和优化 5 数据流图的用途6 使用场景7 实际应用场景举例8 结语 1 前言 当…

经典的回溯算法题leetcode子集问题思路代码详解

目录 子集问题 leetcode78题.子集 leetcode90题.子集II 如果各位对回溯不太了解可以看我昨天写的文章&#xff0c;以及上一篇着重整列了回溯经典的组合问题。 回溯算法详解-CSDN博客 经典的回溯算法题leetcode组合问题整理及思路代码详解-CSDN博客 子集问题 组合问题我们…

使用 Python 和 NLTK 进行文本摘要

一、说明 文本摘要是一种自然语言处理技术&#xff0c;允许用户将大量文本总结为小块&#xff0c;而不会丢失任何重要信息。本文介绍NLP中使用Gensim和Sumy实现文本摘要的步骤。 二、为什么要总结文本&#xff1f; 互联网包含大量信息&#xff0c;而且每秒都在增加。文本摘要可…

鼠标点击位置获取几何体对象_vtkAreaPicker_vtkInteractorStyleRubberBandPick

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码 demo解决问题&#xff1a;框选或者点选某一区域&#xff0c;并获取区域prop3D对象&#xff08;红线内为有效区域&#xff0c;polydata组成的3d几何对象&a…

力扣刷题篇之排序算法

系列文章目录 前言 本系列是个人力扣刷题汇总&#xff0c;本文是排序算法。刷题顺序按照[力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 - 力扣&#xff08;LeetCode&#xff09; 这个之前写的左神的课程笔记里也有&#xff1a; 左程云算法与数据结构代码汇总之排序&am…

【前端】数据行点击选择

前言 【前篇文章】说了,我们公司的核心价值就是让人越来越懒,能怎么便捷就怎么便捷,主打一个简单实用又快捷,为了实现这个目标,我看成这个列表陷入了深思在想,要不要子表的数据加载在点击这个行时,就可以展示数据,这样就不用每次都要点那个小圆圈啦。 查资料 这显然…