项目一感应垃圾桶(Wemos)

硬件材料:
Wemos D1、SG90舵机、HC-SR04、杜邦线若干、蜂鸣器3.3V(可有可无)

软件材料:
arduino IDE编译器、USB转串口驱动

Wemos D1:
特性:

  • 基于ESP-8266EX及arduino做的一个融合
  • arduino兼容,使用arduino IDE编程
  • 11个IO口
  • 一个ADC转换引脚(输入范围0~3.3V),ADC通常用在光照的采集或者人体的模拟量转换的应用。本项目没有使用该功能。
  • 板载5V1A开关电源,集成度高。

arduino IDE:
优点:集成很多开发库,如串口、网络,SG90等各种硬开发接口,迅速开发,自带串口调试工具。
缺点:程序编译速度慢。
注意:本次使用的单片机是Wemos D1,若在开发板里找不到Wemos D1就要在开发板管理器中下载,搜索D1就可以看到ESP8266了,然后安装即可。

蜂鸣器:
低电平触发,也就是将蜂鸣器的IO口设置为输出端口,IO口输出高电平不响,IO口输出低电平响。

驱动蜂鸣器滴滴响:

void setup() {//这个函数里放的是初始化的内容,程序只跑一次pinMode(D5,OUTPUT);//初始化蜂鸣器的IO口为输出模式
}void loop() {digitalWrite(D5,LOW);//输出低电平,蜂鸣器响delay(1000);//延时1000ms=1sdigitalWrite(D5,HIGH);//输出高电平,蜂鸣器不响delay(1000);//延时1000ms=1s
}

SG90舵机:

  • 红色电压线
  • 棕色地线
  • 橙色信号线
  • 无负载速度:0.12s/60度(4.8V)
  • 堵转扭矩:1.2~1.4公斤/厘米(4.8V)
  • 工作电压:4.8~6V

HC-SR04超声波模块:

  • 超声波传感器上面通常带有两个超声波元器件,一个用于发射,一个用于接收。电路板上有4个引脚:VCC(正极)、Trig(触发)、Echo(回应)、GND(接地)。
  • 工作电压与电流:5V、15mA
  • 感测距离:2~400cm
  • 感应角度:不大于15度
  • 在超声波模块的触发脚位输入10微妙以上的高电位,即可以发射超声波,发射超声波以后,与接收到传回的超声波之前,响应位呈现高电位。因此,程序可以从“响应”脚位的高电位脉冲持续时间,换算出被测物体的距离。

超声波部分代码:

#define Echo D2
#define Trig D8
int getTime()//超声波发生函数
{digitalWrite(Trig,HIGH);delayMicroseconds(10);//延时10usdigitalWrite(Trig,LOW);return pulseIn(Echo,HIGH);//计算某个引脚高电平持续的时间,单位是us
}
void initChaoShengBo()//超声波初始化函数
{pinMode(Echo,INPUT);//设置Echo引脚为输入引脚pinMode(Trig,OUTPUT);//设置Trig引脚为输出引脚  
}
void setup() {//这个函数里放的是初始化的内容,程序只跑一次Serial.begin(9600);initChaoShengBo();//在初始化中调用超声波初始化函数
}void loop() {int dis;//超声波测试的距离dis=getTime()/58;//计算距离Serial.print(dis);Serial.println("cm");delay(500);
}
/*
dis=getTime()/58;
关于距离除以58的说明:
波在空气中传播的速度是:343米每秒,也就是343000厘米每秒。根据公式1000000us=1s得0.0343厘米/微妙,再换一个角度,1/(0.0343厘米/微妙)即:29.15微妙/厘米,表示1厘米就是29.15微妙。但是声波走过的距离是二倍,所以除以58就是实际距离。
*/

SG90舵机部分控制代码:

#include <Servo.h>
#define DuoPin D5//将D5红定义为DuoServo myDuoJi;//这是舵机的一个类
void setup() {//这个函数里放的是初始化的内容,程序只跑一次Serial.begin(115200);myDuoJi.attach(DuoPin);//将舵机连接到D5这个引脚
}void loop() {myDuoJi.write();//里面的参数是想要旋转的度数0~180
}

Wemos D1和PC串口通信:

void setup() {//这个函数里放的是初始化的内容,程序只跑一次Serial.begin(115200);
}void loop() {Serial.println("hello!");//单片机向电脑发送hello!
}Serial.begin();
描述:开启串口。
原型:Serial.begin(speed);Serial.begin(speed,config);speed:波特率,一般取值9600115200(就相当于人说话的语速,通信时要保持波特率一至)config:设置数据位、停止位和校验位。默认SERIAL_8N1表示8个数据位,无校验位,1个停止位。
返回值:无Serial.println()
描述:串口输出数据并换行
原型:Serial.println(val)val:打印的值,任意数据类型Serial.available()
描述:判断串口缓冲区的状态,返回串口缓冲区读取的字节数
原型:Serial.available()
参数:无
返回值:可读取的字节数。Serial.read()
描述:读取串口数据,一次读一个字符,读完后删除已读数据
原型:Serial.read()
参数:无
返回值:返回串口缓存中第一个可读字节,当没有可读数据时返回-1,整数类型

代码综合实现效果:

#include <Servo.h>
#define DuoPin 4
#define Echo D2
#define Trig D8
Servo myduoji;
int getTime()//超声波发生函数
{digitalWrite(Trig,HIGH);delayMicroseconds(10);//延时10usdigitalWrite(Trig,LOW);return pulseIn(Echo,HIGH);//计算某个引脚高电平持续的时间,单位是us
}
void initChaoShengBo()//超声波初始化函数
{pinMode(Echo,INPUT);//设置Echo引脚为输入引脚pinMode(Trig,OUTPUT);//设置Trig引脚为输出引脚  
}
void setup() 
{initChaoShengBo();myduoji.attach(DuoPin);//连接舵机Serial.begin(115200);//确定串口的波特率myduoji.write(98);
}void loop() 
{int dis;dis=getTime()/58;//计算手与超声波的距离Serial.println(dis);delay(500);if (dis<10) {myduoji.write(98);delay(1000);}else{myduoji.write(180);}
}

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

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

相关文章

docker删除本地所有镜像

docker rmi -f ${docker images -qa}

PAT1069. The Black Hole of Numbers

//这是到水题&#xff0c;之前因为四位数的原因一直不能A&#xff0c;看了别人的程序&#xff0c;才明白&#xff0c;不够四位的时候没考虑到&#xff0c;坑啊。。。。。脸打肿 #include<cstdio>#include<algorithm>using namespace std;int main(){ //freopen(&qu…

WiFi避障小车

硬件清单&#xff1a; Wemos D1&#xff08;支持AP模式也就是路由模式和STA模式也就是上网设备&#xff09;、超声波模块、小车、L9110s步进电机控制器 软件&#xff1a; eclipse、arduino IDE WiFi配置参考博文 ESP8266WiFi库: 从上图中可以看出ESP8266WiFi库主要包含Stati…

yum常用命令整理

yum命令的形式一般如下。要说明的是以下演示中所使用到的PACKAGE、GROUP都是变量&#xff0c;需要保证运行yum命令的主机能连接外网&#xff0c;否则大部分命令将由于没有网络连接而不能输出结果。yum [options] [command] [package]#以下演示中大写的单词是变量1.安装操作yum …

CSS3 2D 转换

CSS3 2D 转换 先看兼容性 transform属性向应用元素应用2d 或者 3d装换&#xff1b;该属性允许我们进行旋转&#xff0c;缩放&#xff0c;移动或者倾斜&#xff1b; 基本语法&#xff1a; transform: none|transform-functions;transform-function&#xff1a;这东东有n的函数可…

程序猿最喜欢说的30句话

虽然代码总会有这个那个问题&#xff0c;但程序猿却总有谜一般的从容和自信。上图来自&#xff1a;《当程序出问题时程序员最喜欢说的30句话》来看看程序猿经常说的话&#xff1a;1、在我的电脑上是正常的啊。。。2、不可能出现这种情况的3、快了&#xff0c;已经完成了90%。4、…

linux环境下Ncurses实现贪吃蛇游戏

游戏说明&#xff1a; linux环境下基于Ncurses图形库的C语言小游戏。 Ncurses介绍&#xff1a; Ncurses(new curses)是一套编程库&#xff0c;它提供了一系列的函数以便使用者调用它们去生成基于文本的用户界面。 Ncurses是一个能提供功能键定义(快捷键),屏幕绘制以及基于文本…

韩顺平循序渐进学java 第13讲 抽象类.接口

13.1抽象类 13.1.1 概念 当父类的一些方法不能确定时&#xff0c;可以用abstract关键字来修饰该方法&#xff0c;称为抽象方法&#xff0c;用abstract来修饰该类&#xff0c;称为抽象类。 13.1.2 抽象类-深入讨论 抽象类是java中一个比较重要的类&#xff1a; 1、用abstract关键…

C#实现简体繁体转换代码示例

//简体转繁体 public static string _ConvertChinTrad(string strInput) { EncodeRobert edControl new EncodeRobert(); string strResult ""; if (strInput null) return strResult; if (strInput.ToString().Length > 1) strResult edControl.SCTCConvert(…

java基础JDK的安装和环境变量的配置

JRE和JDK&#xff1a; JRE是java程序运行时环境&#xff0c;包含JVM&#xff08;相当于java在不同操作系统上运行时java和操作系统之间的翻译&#xff0c;保证java程序的跨平台&#xff09;和运行时所需要的核心库。所以我们想要运行一个已有的java程序&#xff0c;那么只需要…

C#通过SMTP发送邮件代码示例

1、新建SMTP.cs类库文件 public class SMTP { /// <summary> /// SMTP服务器 /// </summary> public string smtp { get; set; } /// <summary> /// SMTP服务器端口 /// </summary> public int port { get; set; } /// <summary> /// 发件人 ///…

docker下载tomact

docker run -it -p 8080:8080 tomcat 比如下载tomcat,你现在去访问&#xff0c;先访问docker里面的tomcat, 左边的8080是对外暴露的服务端口&#xff0c;对应着右边的8080是tomact的实际端口 下载tomcat 启动tomcat docker run -it -p 8080:8080 tomcat

Wijmo 2016年蓝图

2015年很快就过去了&#xff0c;这是 Wijmo 重要的一年&#xff0c;尤其是对 Wijmo5。脱离传统的小部件&#xff0c;重新写一套 JS 控件&#xff0c;现在看来这个决定是正确的。用 TypeScript 写 Wijmo5&#xff0c;意味着我们没有任何依赖&#xff0c;不再需要 jQuery&#xf…

IDEA安装和运行HelloWorld

IDEA安装&#xff1a; IDEA中Hello World步骤&#xff1a; ① ②点击创建空项目&#xff0c;下一步 ③ ④在打开后会弹出以下界面&#xff0c;然后点击新建模块 ⑤点击新建模块后出现以下界面&#xff0c;选择java并选择JDK的安装路径。 ⑥然后修改模块名称&#xff0c;点击…

C#获取电脑IP、MAC地址示例代码

/// <summary> /// 使用 C# 自带的类库实现计算机信息获取 /// </summary> public class DefaultDeviceInfo { public virtual string GetCpuId() { try { string cpuInfo " "; ManagementClass cimobject new ManagementClass("Win32_Processor…

docker运行随机分配端口

docker run -d -it -P tomcat -P这个是大写的P&#xff0c;表示随机分配端口 执行后可以看到32768为随机分配的端口&#xff0c;8080是tomcat端口 测试成功

C# Stream 和 byte[] 之间的转换

/// <summary> /// 将 Stream 转成 byte[] /// </summary> public byte[] StreamToBytes(Stream stream) { byte[] bytes new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); // 设置当前流的位置为流的开始 stream.Seek(0, SeekOrigin.Begi…

docker下如何进入到容器中

1:查看容器 docker ps -a 2:进入容器 docker exec -it e3cc80415dc7 /bin/bash 退出容器 exit