基于Wemos开发板的智能感应垃圾桶项目
5
2021-11-18
物料准备
迷你垃圾桶

wemos开发板

SG90舵机


超声波模块


开发环境:Arduino

舵机模块设计

#define PIN_SERVO D5 Servo myservo; myservo.attach(PIN_SERVO); myservo.write(30);
超声波模块设计
先来看一下超声波的测距原理,来设计一个根据感应距离实现开盖动作的函数。
long getTime() { digitalWrite(Trig, HIGH); delayMicroseconds(10); //发送一个10微秒的脉冲 digitalWrite(Trig, LOW); return pulseIn(Echo, HIGH); //根据传输过程的高电平计算获取波传输的时间再返回 }
void loop() { long distance; distance = getTime() / 58; //获取距离再除以声波走过的两倍距离 if (distance < 10) { MyMontor.write(1); //根据感应距离操作舵机从而打开盖子 delay(2000); //延迟两秒再关闭盖子 } else { MyMontor.write(180); } }上面遗对58的详解:

项目成功演示
[video width="720" height="1280" mp4="https://159.75.81.167/wp-content/uploads/2021/11/1637217669374344.mp4"][/video]整合代码
#include#define Montor D5 #define Echo D2 #define Trig D8 Servo MyMontor; long getTime() { digitalWrite(Trig, HIGH); delayMicroseconds(10); digitalWrite(Trig, LOW); return pulseIn(Echo, HIGH); } void initUltrasound() { pinMode(Echo, INPUT); pinMode(Trig, OUTPUT); } void setup() { MyMontor.attach(Montor); initUltrasound(); Serial.begin(115200); } void loop() { long distance; distance = getTime() / 58; if (distance < 10) { MyMontor.write(1); delay(2000); } else { MyMontor.write(180); } }
- 0
-
分享