感应开关盖垃圾桶

news/2024/6/20 21:32:20/文章来源:https://blog.csdn.net/weixin_45650620/article/details/137169041

感应开关盖垃圾桶

  • 功能描述

    检测靠近时,垃圾桶自动开盖并伴随滴一声,2秒后关盖

    发生震动时,垃圾桶自动开盖并伴随滴一声,2秒后关盖

    按下按键时,垃圾桶自动开盖并伴随滴一声,2秒后关盖

  • 硬件说明

    SG90舵机,超声波模块,震动传感器,蜂鸣器

  • 接线说明

    舵机控制口 P1.1;超声波Trig接 P1.5 ,Echo接 P1.6 ;蜂鸣器接 P2.0 口; 震动传感器接 P3.2`口(外部中断0)

  • 编程实现

    1. 舵机和超声波代码整合

      舵机用定时器0

      超声波用定时器1

      实现物体靠近后,自动开盖,2秒后关盖

    2. 查询的方式添加按键控制

    3. 查询的方式添加震动控制

    4. 使用外部中断0配合震动控制

  • 代码

    #include "reg52.h"
    #include <intrins.h>
    //垃圾桶感应开关盖
    sbit Trig    = P1^5;//超声波触发
    sbit Echo    = P1^6;//超声波计时
    sbit D5      = P3^7;//led
    sbit D6      = P3^6;
    sbit vibrate = P3^2;//振动信号:不震动时输出1,振动输出0
    sbit sw1     = P2^1;//按键1
    sbit pwm     = P1^1;//舵机信号
    sbit beep    = P2^0;//蜂鸣器int cnt          = 0;//定时器0溢出计数
    int jd           = 0;//舵机旋转角度:1为0°,每增加1,角度增加45°
    int mark_vibrate = 0;//振动标志
    int mark_jd      = 0;//角度标志void time0_init()//定时器0初始化函数
    {TMOD &= 0xF0;//选择定时器0模式TMOD |= 0x01;TL0   = 0x33;//给定定时器0初值TH0   = 0xFE;TR0   = 1;//开启定时器0TF0   = 0;EA    = 1;//开启中断ET0   = 1;
    }void time1_init()//定时器1初始化函数
    {TMOD &= 0x0F;//选择定时器1模式,16位TMOD |= 0x10;TL1   = 0;//定时器1初值为0TH1   = 0;
    }void sg90_init()//舵机初始化
    {jd  = 1;//0°cnt = 0;pwm = 1;
    }
    void ex0_init()//外部中断0 初始化
    {EX0     = 1;//开启中断IT0     = 1;//设置为下降沿触发
    }
    void Delay50ms()		//@11.0592MHz
    {unsigned char i, j;i = 90;j = 163;do{while (--j);} while (--i);
    }void Delay1000ms()		//@11.0592MHz
    {unsigned char i, j, k;_nop_();i = 8;j = 1;k = 243;do{do{while (--k);} while (--j);} while (--i);
    }void Delay10us()		//@11.0592MHz
    {unsigned char i;i = 2;while (--i);
    }void start_HC()//给trig 10us高电平,触发超声波
    {Trig = 0;Trig = 1;Delay10us();Trig = 0;
    }double getDistance()
    {double time;TL1 = 0;//定时器归零TH1 = 0;start_HC();//给trig一个10us的高电平开启测距 while(Echo == 0);//echo由低到高开始计时TR1 = 1;while(Echo == 1);//echo由高到低结束计时 TR1 = 0;time = (TH1*256 + TL1) * 1.085;//计算时间,单位:us//将TH0和TL0两个8位合成一个16位,需要把TH0向左移8位,则需要将TH0 乘以 2的8次方return (0.017 * time);//计算距离340m/s=34000cm/s=34cm/ms=0.034cm/us 单位:cm}
    void openLed()
    {D5 = 1;D6 = 0;
    }void closeLed()
    {D5 = 0;D6 = 1;
    }
    void openDustbin()
    {int n;jd   = 3;//90°if(mark_jd != jd){//角度不发生变化cnt  = 0;beep = 0;for(n=0;n<4;n++){Delay50ms();}beep = 1;while(vibrate == 0);}mark_jd = jd;
    }
    void closeDustbin()
    {Delay1000ms();//延时2s关盖Delay1000ms();jd  = 1;cnt = 0;mark_jd = jd;Delay50ms();
    }
    void main()
    {double dis;Delay1000ms();//稳定一下time1_init();//全部初始化time0_init();sg90_init();ex0_init();mark_jd = 1;beep = 1;while(1){dis = getDistance();if(dis < 10 || sw1 == 0 || mark_vibrate == 1){//接近垃圾桶、按键、振动openLed();openDustbin();mark_vibrate = 0;}else{closeLed();closeDustbin();}Delay50ms();//延时一下,防止程序buzy测不了距离}
    }
    void time0_inter() interrupt 1//定时器0中断
    {//定时器0溢出后cnt++,同时还原初值cnt++;TL0 = 0x33;TH0 = 0xFE;if(cnt < jd){pwm = 1;}else{pwm = 0;}//cnt=40后,正好20ms一个周期if(cnt == 40){cnt = 0;pwm = 1;}
    }
    void ex0_inter() interrupt 0
    {mark_vibrate = 1;
    }
    

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

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

相关文章

YUM安装MySQL报错合集

报错信息 Error:Problem: cannot install the best candidate for the job- nothing provides libcrypto.so.10()(64bit) needed by mysql-community-server-8.0.36-1.el7.x86_64 from mysql80-community- nothing provides libssl.so.10()(64bit) needed by mysql-community-…

工作常用设计模式

设计模式分类 创建者模式&#xff08;5种&#xff09; 单例模式原型模式工厂方法模式抽象工厂模式建造者模式 结构型模式&#xff08;7种&#xff09; 代理模式适配器模式桥接模式装饰者模式外观模式享元模式组合模式 行为型模式&#xff08;11种&#xff09; 模板方法模…

基于TSINGSEE青犀AI视频智能分析技术的山区林区烟火检测方案

随着清明节的临近&#xff0c;山区、林区防火迫在眉睫&#xff0c;TSINGSEE青犀AI智能分析网关V4烟火检测算法利用物联网、人工智能、图像识别技术&#xff0c;有效监测和管理烟火活动&#xff0c;并在火灾发生的同时发出告警&#xff0c;通知护林员与管理人员。 将山区林区的视…

线上研讨会 | 应对汽车毫米波雷达设计中的电磁挑战

智能汽车、新能源汽车最近几年一直是汽车行业关注的热点&#xff0c;随着5G技术越来越普及&#xff0c;汽车智能化发展将越来越迅速。从传统汽车到智能汽车&#xff0c;不是简单功能的增强&#xff0c;而是从单一功能的交通工具变成可移动的办公和娱乐空间&#xff0c;成为物联…

Python(乱学)

字典在转化为其他类型时&#xff0c;会出现是否舍弃value的操作&#xff0c;只有在转化为字符串的时候才不会舍弃value 注释的快捷键是ctrl/ 字符串无法与整数&#xff0c;浮点数&#xff0c;等用加号完成拼接 5不入&#xff1f;&#xff1f;&#xff1f; 还有一种格式化的方法…

AcWing 786. 第k个数——算法基础课题解

AcWing 786. 第k个数 题目描述 给定一个长度为 n的整数数列&#xff0c;以及一个整数 k&#xff0c;请用快速选择算法求出数列从小到大排序后的第 k 个数。 输入格式 第一行包含两个整数 n 和 k。 第二行包含 n 个整数&#xff08;所有整数均在 1∼10^9 范围内&#xff09…

函数参数缺省和内联函数【C++】

文章目录 函数参数缺省函数参数缺省的条件和要求 内联函数内联函数的工作原理内联函数的定义方法内联函数的要求解决方法&#xff1a;直接在.h中定义内联函数的函数体 内联函数再Debug模式下默认是不展开的 函数参数缺省 顾名思义&#xff1a;可以少传一个/多个参数给函数&…

Stream 流和 Lambda 组装复杂父子树形结构

在最近的开发中&#xff0c;遇到了两个类似的需求&#xff1a;都是基于 Stream 的父子树形结构操作&#xff0c;返回 List 集合对象给前端。于是在经过需求分析和探索实践后有了新的认识&#xff0c;现在拿出来和大家作分享交流。 一般来说完成这样的需求大多数人会想到递归&a…

金融汽车科技LLM

汇丰银行 众安保险 1. AIGC重塑保险价值链 小额高频 2.构建智能应用的技术方案演进 增加微服务 长记忆&#xff1a;向量库短记忆&#xff1a;对话历史&#xff0c;思考路径&#xff0c;执行历史 中台架构设计 蔚来汽车在大模型的应用实践 公司介绍 应用架构 应用实践 4.大…

数据结构 - 算法效率|时间复杂度|空间复杂度

目录 1.算法效率 2.时间复杂度 2.1定义 2.2大O渐近表示法 2.3常见时间复杂度计算举例 3.空间复杂度 3.1定义 3.2常见空间复杂度计算举例 1.算法效率 算法的效率常用算法复杂度来衡量&#xff0c;算法复杂度描述了算法在输入数据规模变化时&#xff0c;其运行时间和空间…

rocketmq管理工具rocketmq-console安装

rocketmq-console是一个图形化管理控制台&#xff0c;提供Broker集群状态查看&#xff0c;Topic管理&#xff0c;Producer、Consumer状态展示&#xff0c;消息查询等常用功能&#xff0c;这个功能在安装好RocketMQ后需要额外单独安装、运行。 中文文档地址&#xff1a;https:/…

科技团队治理能力成长路线图

点击&#x1f446;蓝字 关注我们 本文观点&#xff5c;吴穹 主笔&#xff5c;AI小助手 温馨提示&#xff1a;干货长文&#xff0c;建议收藏阅读喔&#xff5e; 引言 2024年3月20日&#xff0c;吴穹博士于上海交通大学上海高级金融学院同一众信托行业金融科技管理者进行了《金融…

基于opencv的SVM算法的车牌识别系统设计与实现

基于opencv的SVM算法的车牌识别系统设计与实现 车牌识别技术是智能交通系统中的一项关键技术&#xff0c;它能够自动识别车辆的车牌号码。本文将详细介绍如何使用Python编程语言结合OpenCV库和SVM算法来实现车牌识别系统。 系统架构 车牌识别系统主要包括以下几个模块&…

前端学习<四>JavaScript基础——01-编程语言和JavaScript简介

计算机语言 概念 计算机语言&#xff1a;人与计算机之间通信的语言。它是人与计算机之间传递信息的媒介&#xff0c;它通过特定的语法规则和语义约定&#xff0c;将人类可理解的指令转化为计算机可以执行的机器指令。 计算机程序&#xff1a;就是计算机所执行的一系列的指令…

docker 部署项目

编写Dockerfile #FROM&#xff1a;基于java:8镜像构建 FROM openjdk:8 #EXPOSE&#xff1a;监听8080端口&#xff0c;暴露容器的8080端口&#xff0c;该端口余项目端口需要一致 EXPOSE 8080 #ARG&#xff1a;引用plugin中配置的 JAR_FILE 文件 ARG JAR_FILE #ADD&#xff1a;将…

OpenHarmony实战:轻量级系统之安全子系统移植

安全子系统提供网络设备连接、认证鉴权等功能&#xff0c;依赖mbedtls实现硬件随机数以及联网功能。 由于每个厂商芯片硬件与实现硬件随机数的方式不同&#xff0c;需要适配硬件随机数接口。 移植指导 OpenHarmony提供了mbedtls的开源三方库&#xff0c;路径为“//third_par…

人人都离不开的算法:AI 时代的生存指南

文章目录 一、算法在生活中的“无处不在”二、算法在工作学习中的“智慧助力”三、算法在社会发展中的“驱动力量”四、算法带来的“双刃剑”效应五、应对算法挑战的策略《人人都离不开的算法——图解算法应用》编辑推荐1、通俗易懂2、技术科普3、贴近时代、贴近生活4、启发思考…

[C++]使用OpenCV去除面积较小的连通域

这是后期补充的部分&#xff0c;和前期的代码不太一样 效果图 源代码 //测试 void CCutImageVS2013Dlg::OnBnClickedTestButton1() {vector<vector<Point> > contours; //轮廓数组vector<Point2d> centers; //轮廓质心坐标 vector<vector<Point&…

Android的图片加载框架

Android的图片加载框架 为什么要使用图片加载框架&#xff1f;图片加载框架1. Universal Image Loader [https://github.com/nostra13/Android-Universal-Image-Loader](https://github.com/nostra13/Android-Universal-Image-Loader)2. Glide [https://muyangmin.github.io/gl…

文献速递:深度学习胰腺癌诊断--深度学习算法用于从疾病轨迹预测胰腺癌风险

文献速递&#xff1a;深度学习胰腺癌诊断--深度学习算法用于从疾病轨迹预测胰腺癌风险 麦田医学 美好事物中转站 2024-04-02 14:36 Title 题目 A deep learning algorithm to predict risk of pancreatic cancer from disease trajectories 深度学习算法用于从疾病轨迹预测…