wemos感应垃圾桶

tech2026-08-22  0

一实验原理及器件

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可以得到距离 }
最新回复(0)