基于Adruino单片机的自动开关垃圾桶(用Adruino和Mind+两种模式实现)

发布于:2022-11-28 ⋅ 阅读:(287) ⋅ 点赞:(0)


前言

最近在学习传感器原理和高频电子技术的课程,对于超声波这一词语很感兴趣,手上也有超声波传感器,尝试着做了一个自动垃圾桶项目,希望大家能够喜欢。


一、自动开关垃圾桶原理

当人接近垃圾桶时,超声波模块会检测到人接近,打开垃圾桶盖,同时,当人离开垃圾桶时,关上垃圾桶盖。

二、实物搭建

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),旨在与各位同学一起交流,提升技术。作为一位死磕嵌入式的小白,希望大家能在此过程中不吝赐教,如有问题,请大家批评指正。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到