文章目录
前言
最近在学习传感器原理和高频电子技术的课程,对于超声波这一词语很感兴趣,手上也有超声波传感器,尝试着做了一个自动垃圾桶项目,希望大家能够喜欢。
一、自动开关垃圾桶原理
当人接近垃圾桶时,超声波模块会检测到人接近,打开垃圾桶盖,同时,当人离开垃圾桶时,关上垃圾桶盖。
二、实物搭建
1.设备清单
1、Arduino UNO板(含USB连接线)
2、HC-SR04超声波传感器
3、SG90舵机1个
4、杜邦线(若干)
2.I/0口接线
HC-SR04超声波传感器 | Arduino UNO板 |
---|---|
GND | GND |
VCC | 5v |
Trig | D2 |
Echo | D3 |
SG90舵机 | Arduino UNO板 |
---|---|
GND | GND |
VCC | 5V |
Signa | D8 |
3.接线图
4.Adruino IDE实现
4.1Adruino IDE的使用
1.点击新建,选择文件就可以建立一个新文件,初始界面如下图所示。
2、点击项目,加载库,管理库,搜索Servo,下载库。(其他库也可以在线下载,或者下载库的压缩包)
3、选择工具、查看端口是否正确(一般要插上单片机才能检测到)。
4、进行编译和上传。
4.2系统代码实现
set up()代码如下(示例):
void setup()
{
myservo.attach(8); // 设置舵机的Signa引脚为D8
Serial.begin(115200);//设置波特率,方便测量
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
loop()代码如下(示例):
void loop() {
float distance = readDistanceCM();
Serial.print("Measured distance: ");
Serial.println(readDistanceCM());//便于测试,从串口中查看
if(distance<10)
{
myservo.write(0);//小于10cm开盖
delay(2000);//2秒的延时
}
else
{
myservo.write(90);//大于10cm关盖
}
}
4.3最终效果
串口界面
实物模型
未组装前:
组装后
5.MIND+实现(适合上小学初中的小朋友,拼积木的快感~)
5.1MIND+的使用
1、打开扩展
2、在主控板上选择Adruino Uno,传感器中选择超声波测距传感器,执行器中选择舵机模块。
5.2系统代码实现
1、图形块
2、代码如下(示例):
#include <DFRobot_URM10.h>
#include <DFRobot_Servo.h>
// 创建对象
DFRobot_URM10 urm10;
Servo servo_8;
// 主程序开始
void setup() {
Serial.begin(9600);
servo_8.attach(8);
}
void loop() {
Serial.print("distance:");
Serial.println((urm10.getDistanceCM(3, 2)));
if (((urm10.getDistanceCM(3, 2))<10)) {
servo_8.angle(abs(0));
}
else {
servo_8.angle(abs(90));
}
}
最后只需选择串口,找到上传模式上传就行了。
总结
以上就是今天要分享的内容,本文用Adruino IDE 和MIND+实现了自动开关垃圾桶的项目,具体代码已经在gitee仓库开源(https://gitee.com/nqqdz/Automatic-switch-trash-can.git),旨在与各位同学一起交流,提升技术。作为一位死磕嵌入式的小白,希望大家能在此过程中不吝赐教,如有问题,请大家批评指正。