【arduino】超声波垃圾桶

简介: 【arduino】超声波垃圾桶

⭐效果

blob:https://www.bilibili.com/49190746-e7aa-43fe-bde0-60f9ab74ec78

自制超声波垃圾桶(硬件设施细节还要完善)

⭐所需器材

超声波传感器,跳线,舵机,小垃圾桶外壳,arduino uno开发板

⭐连线图片

image.png

⭐程序代码

#include <Arduino.h>
#include <Servo.h>
#define echoPin 2  
#define trigPin 3  
Servo duoji; 
long duration; 
int distance;  
int angle = 0; //舵机角度
void setup()
{
  pinMode(trigPin, OUTPUT);                         
  pinMode(echoPin, INPUT);                          
  duoji.attach(9);                            
  Serial.begin(9600);                               
}
void loop()
{
  //先清空触发脚状态,准备发送下一次的超声波信号
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration * 0.034 / 2; //测距
  Serial.println(distance);
  if (distance > 20)//20厘米
  {
    if (duoji.read() == 90)
    {
      delay(1000);
    }
    else
    {
      angle = duoji.read();
      while (angle < 90)  //打开垃圾桶
      {
        angle+=10;
        duoji.write(angle);
        delay(10);
      }
      delay(1000);
    }
  }
  else 
  {
      angle = duoji.read();
      while (angle > 0)  //关闭垃圾桶
      {
        angle-=10;
        duoji.write(angle);
        delay(10);
      }
      duoji.write(0);
  }
}

⭐代码分析

✨引入所需的库文件

#include <Arduino.h>
#include <Servo.h>

✨定义引脚

#define echoPin 2  //将Echo引脚连接到D2
#define trigPin 3  //将Trig引脚连接到D3

✨定义变量并且初始化

long duration = 0;
int distance = 0;
int angle = 0;

✨程序初始化

void setup()
{
  pinMode(trigPin, OUTPUT);     
  pinMode(echoPin, INPUT);      
  duoji.attach(9);              //将舵机信号引脚连接到数字引脚9
  Serial.begin(9600);           //设置波特率
}

✨pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT);  函数

       这两行代码用于初始化 HC-SR04 超声波传感器连接的两个引脚,即将触发脚(Trig Pin)设置为输出模式,使其能够发送超声波信号,并将回波脚(Echo Pin)设置为输入模式,用于接收回波信号。


       在使用 HC-SR04 进行测距时,需要通过触发引脚发送一定时间的超声波信号,然后等待该信号的回波,测量回波的行程时间,最终通过行程时间和声波在空气中的传播速度计算出测距结果。因此,在这段代码中需要将引脚初始化为相应的输入输出模式,以便进行后续的超声波测距操作。


✨digitalWrite(trigPin, HIGH)函数

 digitalWrite(trigPin, HIGH) 用于将触发引脚 trigPin 的电平设置为高电平,以激活 HC-SR04 超声波传感器并发送超声波信号。


       在 HC-SR04 进行测距时,需要向触发引脚发送一定时间的高电平信号才能启动传感器,并在一定时间后自动停止发射传感器,开始接收回波信号,该函数用于实现发送触发信号的操作,从而开始一次超声波测距操作。


✨digitalWrite(trigPin, LOW)函数

 digitalWrite(trigPin, LOW) 用于将触发引脚 trigPin 的电平设置为低电平,以实现清空触发脚状态,准备发送下一次的超声波信号。


       在 HC-SR04 测距过程中,需要向触发引脚发送一定时间的高电平信号才能激活传感器并发送超声波信号,因此在每次测距结束后,需要调用该函数将触发引脚的电平设置为低电平,以便准备下一次的超声波测距。


🍔注意

       要先使用digitalWrite(trigPin, LOW),以实现清空触发脚状态,准备发送下一次的超声波信号。然后再使用digitalWrite(trigPin, HIGH)


       如果不明白的话,分析一下上面的完整代码


✨delayMicroseconds(2)函数

  delayMicroseconds(2) 是一个延时函数,用于在超声波传感器触发引脚电平由低电平变为高电平后延迟 2 微秒的时间,以满足 HC-SR04 的触发要求。


       在 HC-SR04 进行测距时,需要将触发引脚电平设置为高电平并保持至少 10 微秒的时间,才能激活传感器并发送超声波信号。而本函数的作用就是在设置触发引脚为高电平后,等待一段时间(这里为 2 微秒)后再继续执行下一步操作,从而满足 HC-SR04 触发的要求。


✨pulseIn() 函数

  pulseIn() 是Arduino内置的一个函数,它用于测量数字引脚上的高或低脉冲的持续时间,通常用于接收超声波传感器(如 HC-SR04)的回波信号的持续时间。在这个代码中,它被用于读取echoPin引脚输入的声波行程时间,从而计算距离。


       具体来说,pulseIn() 函数接收两个参数,第一个是要测量的引脚,第二个是脉冲电平(HIGH或LOW)。在这里,我们需要测量接收到的高电平的持续时间,因此第二个参数是 HIGH。该函数将等待引脚上产生与给定电平相同的脉冲,并返回脉冲持续的时间,单位是微秒。因此,这个代码中,通过pulseIn(echoPin, HIGH) 读取到的值为声波从发送出去到接收到回波的总时间,即行程时间(单位:微秒)。最后将计算后的距离除以58.0,得到测量距离的结果(单位:厘米)。


需要注意的是,由于pulseIn()函数要等待接收到指定电平的脉冲,因此会阻塞代码执行。此外,在pulseIn()函数中还可以设置超时时间,避免因为某些原因导致函数一直等待而无法返回。


✨Serial.println(distance)函数

方便在串口监视器来查看测量的距离是多少


✨关于舵机的操作

请看:【Arduino】舵机的连线和基本操作-CSDN博客  

相关文章
|
程序员 编译器 Linux
V 语言
V 是一门通用的编程语言,也可以作为系统语言,其网站说它非常简单,你可以在一个周末学会,它还说 Go 程序员会对该语言非常熟悉,因为 V 语言在很多方面借鉴了 Go。
991 2
|
人工智能 自然语言处理 算法
打破AI信息差:2024年20款好用的人工智能工具大盘点
本文带你了解20款值得一试的AI工具,帮助你在内容创作、图像设计、音频视频编辑等领域提高效率、激发创意。
2389 1
打破AI信息差:2024年20款好用的人工智能工具大盘点
|
安全 Java API
Java 17新特性让你的代码起飞!
【10月更文挑战第4天】自Java 8发布以来,Java语言经历了多次重大更新,每一次都引入了令人兴奋的新特性,极大地提升了开发效率和代码质量。本文将带你从Java 8一路走到Java 17,探索那些能让你的代码起飞的关键特性。
483 1
|
安全 前端开发 网络安全
2025年最受欢迎的CMS系统。
在2025年,国内知名CMS系统PageAdmin CMS、国外博客程序Wordpress、PHP论坛系统discuz和电子商务商城系统PrestaShop将为用户提供强大、灵活、易用的CMS管理系统。
984 63
|
传感器 存储 网络协议
Arduino 中的常见的库
Arduino 中的常见库包括:Wire(I2C通信)、SPI(串行外设接口)、Servo(伺服电机控制)、EEPROM(数据存储)、LiquidCrystal(液晶显示)等,这些库简化了硬件编程,提高了开发效率。
1684 3
|
人工智能 Kubernetes API
3分钟掌握合同比对,思通数科开源工具让法律审查更高效
思通数科AI多模态平台提供开放API,支持与法律机构常用的ERP、CRM等企业系统集成。平台具备Docker、Kubernetes兼容性,支持二次开发和模块扩展,使用户能灵活应对不同业务需求。
|
运维 微服务
业务系统架构实践问题之什么是配置态和运行态的解耦
业务系统架构实践问题之什么是配置态和运行态的解耦
470 0
|
Linux 数据安全/隐私保护
linux搭建邮件服务器
一、概述:   在配置邮件服务器之前,先解释几个概念。   通常使用Email都很容易,但是Internet的邮件系统是通过几个复杂的部分连接而成的,对于最终用户而言,我们熟悉的Outlook,Foxmail等都是用来收信和发信的,称之为MUA:Mail User Agent,邮件用户代理。
10019 0
|
安全 数据库连接 数据库
sscms迁移服务器,修改数据库连接字符串
sscms迁移服务器,修改数据库连接字符串,siteserver
533 0
sscms迁移服务器,修改数据库连接字符串

热门文章

最新文章