基于Wemos的智能感应开盖垃圾桶——日记

参考:基于Wemos的智能感应开盖垃圾桶——日记
作者:9art0
发布时间:2020-09-24 00:40:59
网址:https://blog.csdn.net/GatoWong/article/details/108759063?spm=1001.2014.3001.5501

1.项目软硬件平台及开发环境

1.1.硬件平台
在这里插入图片描述
1.2.开发环境
在这里插入图片描述
1.3.安装USB转串口驱动在这里插入图片描述

1.4.编辑:使得编程文件仅供Wemos使用
在这里插入图片描述
1.5.查看是否编辑完成
在这里插入图片描述

2.Wemos玩蜂鸣器

在这里插入图片描述
在这里插入图片描述

void setup() {pinMode(D5, OUTPUT); //配置D5为输出端口
}void loop() {//上电后不断执行loop函数中的代码,应将核心控制代码写入loop
//HIGH,LOW经过了宏定义digitalWrite(D5, HIGH);     // 输出高电平,蜂鸣器闭嘴delay(1000);    //单位为ms,这一秒内都得闭嘴digitalWrite(D5, LOW);     //输出低电平,蜂鸣器吼起来delay(1000);    //吼一秒(延时期间,蜂鸣器控制引脚属于低电平)
}

3.Wemos串口通信(收发)

在这里插入图片描述
下面学习Wemos几种函数
Serial——串口API(Application Programming Interface,应用程序接口)是一些预先定义的函数。在Wemos里,函数经过高度封装。Serial.xxx类似于C++,一点后加函数即可调用。

3.1.初始化函数
在这里插入图片描述
3.2.串口发送函数在这里插入图片描述
下面进行两个函数的应用

void setup() {Serial.begin(115200);//打开串口,调用begin函数。begin(speed),speed为设置的波特率。
}void loop() {Serial.println("You are hansome!!!");//println,串口输出数据并换行。
}

编码前查看编译环境波特率是否与设定的一致
在这里插入图片描述

使用串口调试软件查看Wemos板的输出情况,记得设置软件的波特率与代码设定的一致
在这里插入图片描述
———————————————————————————————————————
3.3.有数据到来函数
在这里插入图片描述
3.4.串口读取函数
在这里插入图片描述
下面进行两个函数的应用

void setup() {Serial.begin(115200);
}void loop() {if(Serial.available()>0){//判断串口缓冲区状态if(Serial.read()==6){//读取串口数据Serial.println("You are handsome!");}else {Serial.println("You are not handsome!");}}
}

4.通过串口控制蜂鸣器的响与不响

void setup() {Serial.begin(115200); //串口通信,首先设置波特率pinMode(D5,OUTPUT); //将D5设置为输出状态digitalWrite(D5,HIGH);  //另D5输出高电平,一上电使得蜂鸣器不响
}void loop() {if(Serial.available()>0){ //如果串口来数据了if(Serial.read()== 1){ //而且到来的数据是数字1Serial.println("DEE!!!"); digitalWrite(D5,LOW); //D5输出低电平,让蜂鸣器响}else{Serial.println("HUSH~"); digitalWrite(D5,HIGH);//D5输出低电平,让蜂鸣器不响}}}

5.模块接线

在这里插入图片描述

6.SG90舵机开盖调试

6.1.舵机参数及其调用函数
在这里插入图片描述

servo库是arduino的舵机函数库
在这里插入图片描述
6.2.舵机开盖测试

#include<Servo.h> //头文件为Servo#define DUOPIN D5 //把引脚D5命名为DUOPINServo SG90; //把Servo类函数命名为SG90,为C++代码。void setup() {SG90.attach(DUOPIN);//调用attach函数,连接舵机,即连接引脚DUOPIN
}void loop() {SG90.write(0);//控制舵机转到0°位置delay(1000);//延时1秒SG90.write(90);//控制舵机转到90°位置delay(1000);
}

6.3.串口控制舵机开盖

#include<Servo.h> //头文件为Servo#define DUOPIN D5 //把引脚D5命名为DUOPIN//记得不要加分号Servo SG90; //把Servo类函数命名为SG90,为C++代码。void setup() {SG90.attach(DUOPIN);//调用attach函数,连接舵机,即连接引脚DUOPINSerial.begin(115200);
}void loop() {if(Serial.available()>0){if(Serial.read()==1){SG90.write(0);//控制舵机转到0°位置}}if(Serial.read()==0){SG90.write(90);//控制舵机转到90°位置}}//别用else,单单用else,会包括除条件以外的所有情况,不会保持开或盖的状态。//能保持开或者盖的状态的只有不断循环if函数

7.超声波测距

7.1.超声波模块介绍
在这里插入图片描述

7.2.超声波模块测距原理
全程耗时为接收模块ECHO的高电平持续时间
在这里插入图片描述
在这里插入图片描述
结论:超声波走过1厘米的时间为29.15微秒

7.3.超声波测距代码

#define Echo D2
#define Trig D8long getTime(){ //long是整型digitalWrite(Trig,HIGH);//Trig输出高电平delayMicroseconds(10);//维持10微秒digitalWrite(Trig,LOW);//Trig降为低电平,引起一次脉冲触发return pulseIn(Echo,HIGH);//返回ECHO处于高电平的时间(获取全程耗时)
}void setup() {pinMode(Echo,INPUT);//一开始先回声接收装置打开(进入接收状态input)pinMode(Trig,OUTPUT);//发射装置打开(给予触发信号,进入待输出状态ouput)Serial.begin(115200);//用到了串口通信
}void loop() {long distance;distance=getTime()/58;//因为经过29.15微秒,超声波走过1厘米,物距=声波路程/2Serial.print(distance);//打印物距数值Serial.println("cm");//打印单位delay(500);//等500微秒后进行下一次测距
}

8.项目代码整合

#include<Servo.h> #define Echo D2//把引脚D2命名为Echo//记得不要加分号
#define Trig D8//把引脚D8命名为Trig
#define DUOPIN D5//把引脚D5命名为DUOPIN
Servo SG90; //把Servo类函数命名为SG90,为C++代码。long getTime(){ //long是整型digitalWrite(Trig,HIGH);//Trig输出高电平delayMicroseconds(10);//维持10微秒digitalWrite(Trig,LOW);//Trig降为低电平,引起一次脉冲触发return pulseIn(Echo,HIGH);//返回ECHO处于高电平的时间(获取全程耗时)
}void setup() {pinMode(Echo,INPUT);//一开始先回声接收装置打开(进入接收状态input)pinMode(Trig,OUTPUT);//发射装置打开(给予触发信号,进入待输出状态ouput)SG90.attach(DUOPIN);//调用attach函数,连接舵机,即连接引脚DUOPINSerial.begin(115200);//用到了串口通信
}void loop() {long distance;distance=getTime()/58;//因为经过29.15微秒,超声波走过1厘米,物距=声波路程/2if(distance<10){SG90.write(0);//控制舵机转到0°位置delay(2000);//延时两秒}else SG90.write(90);//控制舵机转到90°位置}

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

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

相关文章

严格程度_国内医疗器械生产许可证申请申报-经营一类、二类、严格的三类之间区别...

医疗器械生产许可证是医疗器械生产企业必须持有的证件&#xff0c;由当地药监局审核颁发。开办医疗器械生产企业应当符合国家医疗器械行业发展规划和产业政策。医疗器械生产许可证同样也是根据生产医疗器械的种类不同&#xff0c;需要办理资质审批也是不同的&#xff0c;具体如…

matlab z变换离散化_用C++编写一个简单的光栅化渲染器:3D篇

3D光栅化与2D光栅化在图元绘制方面差别并不大&#xff0c;3D光栅化主要是多了很多坐标系(Local&#xff0c;world&#xff0c;View...)&#xff0c;除此外遮挡算法和裁剪算法也会稍微复杂一些。本篇文章的重点就主要集中在各种坐标系变换上。1.基本3D变换本文所采用的向量(vect…

Catalan数列

引入 今天听学长讲了卡特兰数列后对其有了更深的认识&#xff0c;在此完善了一下之前的博客加以总结。 首先用一个经典的例子来描述一下Catalan数列&#xff0c;我们有一个1~n的数列和一个大小为n的栈&#xff0c;我们有如下两种操作&#xff1a; 当未入栈序列不为空时&#xf…

计算机和外部通信方式,计算机和外部的通信方式

计算机和外部交换信息又称为通信(Communication)。按数据传送方式分为并行通信和串行通信两种基本方式。1、并行通信并行通信就是把传送数据的n位数用n条传输线同时传送。其优点是传送速度快、信息率高。并且&#xff0c;通常只要提供二条控制和状态线&#xff0c;就能完成CPU和…

stm32入门之keil5的安装以及第一个工程的建立

摘自&#xff1a;stm32入门之keil5的安装以及第一个工程的建立 作者&#xff1a;SKY丶丿平才 发布时间&#xff1a; 2020-12-06 17:08:30 网址&#xff1a;https://blog.csdn.net/weixin_48264057/article/details/110734596 文章目录 前言一、keil5的下载与安装1.下载相关链接…

微信电脑客户端_无聊的话,用微信玩玩电脑

被禁足的2020注定是让人印象深刻的一年如果现在你很无聊来试试用微信玩玩电脑看能否给这不出门就是做贡献的日子带来一点乐趣开启步骤1、在能使用(接触的)的电脑上安装上Hipc在电脑访问 hipc.cn下载PC客户端(仅2M左右大小)2、安装PC客户端3、微信扫一扫绑定现在看看如何用微信玩…

epic堡垒之夜显示服务器离线,堡垒之夜epic服务器进不去 | 手游网游页游攻略大全...

发布时间&#xff1a;2017-12-19堡垒之夜开国服了,那么有的小伙伴就发现自己的国服为什么进不去,下面牛游戏小编就为你们带来了堡垒之夜国服进不去的解决办法,想了解的小伙伴就一起来看看吧,希望能对你们有帮助. 解决办法如下: 1.重新下载并安装游戏,下载前关 ...标签&#xff…

动态加载 回显_ElementUI cascader级联动态加载及回显

先看图&#xff0c;你是否也遇到这个需求&#xff1f;如果你正在焦头烂额&#xff0c;无脑抓瞎&#xff0c;那么你来对地方了&#xff0c;因为我将给你一个简单易懂的实现方案。我也在网上翻了无数页答案&#xff0c;也照着别人的代码和思路尝试了&#xff0c;事实上并不能解决…

单片机的四种烧写方式

参考&#xff1a;单片机的四种烧写方式 作者&#xff1a;爱学习的小王呀 发布时间&#xff1a;2020-11-27 20:05:12 网址&#xff1a;https://blog.csdn.net/hongliwong/article/details/110245095?spm1001.2014.3001.5501 参考&#xff1a;单片机3种烧录方式解析 作者&#x…

关于驰骋表单引擎中字段扩展设置对文本框Pop窗体返回值的升级说明 2012/11/13...

为什么80%的码农都做不了架构师&#xff1f;>>> 关于驰骋表单引擎中字段扩展设置对文本框Pop窗体返回值的升级说明 2012/11/13 现有功能: 以前版本仅支持自己定义url&#xff0c;返回值到文本框上. 升级功能: 1, 增加了可以自己定义数据源模式&#xff0c;数据源可…

中兴f650 2.0.3 固件降级_手机资讯:如何升级iOS12.1.4正式版iOS12.1.4正式版升降级教程...

如今使用IT数码设备的小伙伴们是越来越多了&#xff0c;那么IT数码设备当中是有很多知识的&#xff0c;这些知识很多小伙伴一般都是不知道的&#xff0c;就好比最近就有很多小伙伴们想要知道如何升级正式版正式版升降级教程&#xff0c;那么既然现在大家对于如何升级正式版正式…

C# 加密解密类

一. MD5 1 防止看到明文 数据库密码&#xff0c;加盐(原密码固定字符串&#xff0c;然后再MD5/双MD5) 2 防篡改 3 急速秒传(第一次上传文件&#xff0c;保存md5摘要&#xff0c;第二次上传检查md5摘要) 4文件下载(防篡改&#xff0c;官方发布的时候给一个md5摘要&#xf…

请求solr服务器未响应,solr与tomcat整合

一、准备工作&#xff1a;我使用的是tomcat7.0,solr-4.8.1solr-4.8.1解压后是这样的。二、开始配置了1、首先要创建两个文件夹。home和server。我是创建在与solr-4.8.1同一根目录上的。D:\work-tool\server\solr\home和D:\work-tool\server\solr\server2、从solr-4.8.1\dist复制…

WeMos下实现小车避障与手机控制

参考&#xff1a;WeMos下实现小车避障与手机控制 作者&#xff1a;爱学习的小王呀 发布时间&#xff1a;2020-10-02 10:17:45 网址&#xff1a;https://blog.csdn.net/hongliwong/article/details/108900048?spm1001.2014.3001.5501 目录前言一、项目软硬件平台及开发环境1.硬…

苹果手机耗电快_iPhone12用5G耗电快,苹果回应

原标题&#xff1a;iPhone12用5G耗电快&#xff0c;苹果回应北京头条客户端10月24日消息&#xff0c;针对有媒体测试苹果iPhone12开启5G模式下&#xff0c;用电量提升的问题&#xff0c;苹果iPhone营销副总裁Kaiann Drance回应称&#xff0c;iPhone12 增加的智能数据模式可以平…

Ubuntu12 10下安装JDK7

为什么80%的码农都做不了架构师&#xff1f;>>> Ubuntu12 10版本下&#xff0c;不再预装JDK&#xff0c;包括OpenJdk&#xff0c;所以我们要从Oracle官网上下载java7的压缩包&#xff0c;选择适合自己电脑的安装包&#xff0c;我选的是jdk-7u9-linux-i586.tar.gz。…

neo4j python 算法_python操作neo4j简单实例

一&#xff1a;neo4j是什么neo4j:Neo4j是一个高性能的,NOSQL图形数据库,有关于更多neo4j的资料出门右拐二:python操作neo4j的实现python中neo4j的操作可以利用驱动包或者py2neo包&#xff0c;我采用py2neo第三方包实现以下简单功能&#xff0c;先建立一个neo4j的链接对于neo4j的…

尚硅谷的 ediary 笔记_干货分享 | 硅谷创新加速营第五讲教您合理规划融资需求 降低投资风险...

5月26日上午&#xff0c;康佳之星携手青岛蓝谷管理局、斯坦福青岛研究院、海尔海创汇联合举办的第二届硅谷创新加速营第五讲顺利完成。斯坦福青岛研究院董事长的Claude Leglise先生做客直播间&#xff0c;为现场创业者、企业家讲授创业之路必修课&#xff1a;企业财务规划。本讲…

虚拟机的服务器黑屏,VMware Workstation 14运行虚拟机黑屏解决办法

VMware Workstation 14运行虚拟机黑屏解决办法升级到VMware workstation 14 pro后所有虚拟系统全部黑屏&#xff0c;VMware 14 黑屏&#xff0c;VMware Workstation 14运行虚拟机黑屏是什么原因步骤如下&#xff0c;步骤如下&#xff0c;1、以管理员身份运行命令提示符(cmd.exe…

c++ 冒泡排序_干货|python笔记1-冒泡排序

面试的时候经常有面试官喜欢问如何进行冒泡排序&#xff1f;这个问题相信可以难倒一批的同学&#xff0c;本篇就详细讲解如何用python进行冒泡排序。基本原理01概念&#xff1a;冒泡排序是一种交换排序&#xff0c;它的基本思想是&#xff1a;两两比较相邻记录的关键字&#xf…