wemos感应垃圾桶

一实验原理及器件

1.1 器件

一个迷你垃圾桶、Wemos开发板、超声波模块、SG90舵机

1.2 原理

用超声波模块获得物体间的距离,当它小于这个距离时,舵机转动,开盖并持续一段时间,当距离变大时,关盖。

二、代码

2.1代码实现

代码如下:

#include<Servo.h>

#define Echo D2
#define Trig D8
#define DuoPin D5
Servo myDuoJi;
long getTime()
{
  digitalWrite(Trig, HIGH);
  delayMicroseconds(10);//微秒
  digitalWrite(Trig, LOW); //形成一个10微秒的方波

  return pulseIn(Echo, HIGH);
}

void initChaoShengBo()
{
  pinMode(Echo, INPUT);
  pinMode(Trig, OUTPUT);

}
void setup() {
  // put your setup code here, to run once:
  initChaoShengBo();
  myDuoJi.attach(DuoPin);
  Serial.begin(115200);
}

void loop() {
  // put your main code here, to run repeatedly:
  long dis;
  dis = getTime() / 58; //获取距离
  Serial.print(dis);
  Serial.println("cm");
  if (dis < 10) {
    myDuoJi.write(45);
    delay(5000);
  } else {
    myDuoJi.write(150);
  }
}

2.2笔记

2.2.1舵机的初始化

要包含以下这些

#include<Servo.h>//定义头文件
Servo myDuoJi;//定义舵机变量

servo函数类用法

attach连接舵机
read()读上一次舵机转动角度
write()控制舵机转动角度
attached()检查舵机是否连接控制板上
detach()断开舵机连接
writeMicroseconds()更精准的角度控制

2.2.2超声波的运用

void initChaoShengBo()//初始化超声波
{
  pinMode(Echo, INPUT);//设置为输入引脚
  pinMode(Trig, OUTPUT);//设置为输出引脚
}
long getTime()//获取时间
{
  digitalWrite(Trig, HIGH);
  delayMicroseconds(10);//微秒
  digitalWrite(Trig, LOW); //形成一个10微秒的方波

  return pulseIn(Echo, HIGH);//波传输过程中,Echo一直会维持在高电平,返回这个时间,再除以58可以得到距离
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值