基于Wemos的感应开盖垃圾桶

所需硬件

weMos D1开发板;

蜂鸣器;

SG90舵机;

代码如下 

#include<Servo.h> 
#define SERVO D5                //定义舵机信号口为D5脚
#define Echo D2                 //定义超声波模块响应信号口为D2脚
#define Trig D8                 //定义超声波模块触发信号口为D8脚
#define BUZZER D3               //定义定义蜂鸣器信号口为D3脚
Servo myServo;
long ping()                     //通过多次调用ping函数得到响应口高电平维持的时间
{
  digitalWrite(Trig, HIGH);     //在超声波触发信号口写入高电平
  delayMicroseconds(10);        //延时10微秒
  digitalWrite(Trig, LOW);      //在超声波触发信号口写入低电平
  return pulseIn(Echo, HIGH);   //通过pulseIn得到响应口高电平的时间,并返回到ping函数
}
void initUltrasound()           //调用一次initUltrasound函数初始化超声波模块
{
  pinMode(Echo, INPUT);         //初始化超声波模块响应信号口为信号输入口(输入信号到weMos板)
  pinMode(Trig, OUTPUT);        //初始化超声波模块触发信号口为信号输出口(从weMos板输出信号)
  pinMode(BUZZER, OUTPUT);      //初始化蜂鸣器模块信号口为输出口(从weMos板输出信号)
  myServo.attach(SERVO);        //连接舵机(D5脚)
  myServo.write(60);            //初始化舵机(垃圾桶为闭合状态)
  digitalWrite(BUZZER, HIGH);   //初始化蜂鸣器为高电平(不响)
  delay(1000);                  //延时1秒,抵消上电
  
}
void setup()
{
  initUltrasound();             //调用initUltrasound函数初始化超声波模块
  Serial.begin(115200);         //初始化串口,设置波特率为115200
}
void loop()
{
  long distance;
  distance = ping() / 58;       //通过调用ping函数得到的返回值除以58得到距离
  Serial.print(distance);       //在电脑上打印距离的具体数值
  Serial.println("cm");
  if (distance < 10) {          //如果距离小于10cm
    digitalWrite(BUZZER, LOW);  //蜂鸣器响
    myServo.write(175);         //垃圾桶开盖
    delay(900);                 //延时0.9秒
  } else {                      //否则
    digitalWrite(BUZZER, HIGH); //蜂鸣器不响
    myServo.write(60);          //垃圾桶关盖
  }
}

 当距离垃圾桶小于10cm时,垃圾桶开盖,蜂鸣器响

printf("一个编程小白的第一次实践\n");

软件环境介绍软件环境介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值