Arduino项目实战——基于Arduino【智能垃圾桶】设计

 

                          Arduino项目实战——基于Arduino【智能垃圾桶】设计

     第一次接触Arduino是在大一的时候,距离现在已经五年,当时一个简单的“电子琴”项目就让我抓耳挠腮,根本不具备“面向百度编程”能力的我,用老师提供的文档跟我的组员用了好几天,才让Arduino跟蜂鸣器想起一首简单版的《小星星》。当时内心的喜悦以及在舍友面前装X的沙雕模样仿佛还在昨日。

    因为Arduino容易入门,而且能让初学者快速体验到单片机开发的乐趣,因此用一个小栏目分享一些以前在学校里面做过的小项目,也欢迎喜欢单片机嵌入式的同仁,进群交流(扣扣:931944416)。群里会提供很多单片机嵌入式项目的源代码以及资料的分享,期待你的加入!

    Arduino之旅的初次见面,加油吧后浪!

一、硬件准备

  • Arduino UNO
  • HC-SR04超声波模块
  • SG90舵机
  • 杜邦线若干
  • 电源

二、接线方式

三、代码解析

#include <Servo.h>   //servo library
Servo servo;    //创建舵机对象来控制舵机 
int trigPin = 5;    
int echoPin = 6;   
int servoPin = 7;
int led= 10;
long duration, dist, average;   
long aver[3];   //array for average


void setup() {   
  //初始化串口通信以及连接SR04的引脚    
    Serial.begin(9600);
    
    servo.attach(servoPin);//把连接在引脚7上的舵机赋予舵机对其控制
      
    pinMode(trigPin, OUTPUT);   //要检测引脚上输入的脉冲宽度,需要先设置为输入状态  
    pinMode(echoPin, INPUT);  
    servo.write(0);         //close cap on power on
    delay(500)
    servo.detach(); 
} 

void measure() {  
    digitalWrite(10,HIGH);
    
    digitalWrite(trigPin, HIGH);  //产生一个10us的高脉冲去触发TrigPin
    delayMicroseconds(2);
    digitalWrite(trigPin, LOW);
    delayMicroseconds(5);
    digitalWrite(trigPin, HIGH);
    
    pinMode(echoPin, INPUT);
    duration = pulseIn(echoPin, HIGH);  
    dist = (duration/2) / 10;    //obtain distance 检测脉冲宽度并测算出距离    
}
void loop() { 
  for (int i=0;i<=2;i++) {   //average distance
    measure();               
    aver[i]=dist;            
    delay(10);              //delay between measurements
  }
 dist=(aver[0]+aver[1]+aver[2])/3;    

    if ( dist<50 ) {
    //Change distance as per your need
    servo.attach(servoPin);
    delay(1);
    servo.write(0);  
    delay(3000);       
    servo.write(150);    
    delay(1000);
    servo.detach();      
}
    Serial.print(dist);
}

四、效果演示:

热门文章

暂无图片
编程学习 ·

SpringBoot解决跨域

第一种:书写解决跨域的类public class AccessControlAllowOriginFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) …
暂无图片
编程学习 ·

CnPlugin是PL/SQL Developer工具插件使用

CnPlugin是PL/SQL Developer工具插件,支持PL/SQL Developer 7.0以上版本。1、安装2、拷贝文件安装结束后,得到一个 CnPlugin.dll 和 “CnPlugin”的文件夹,把这两个拷贝到 PL/SQL Developer的安装路径下的 “PlugIns”目录下,重启PL/SQL Develop可以使用了,打开的时候 会在…
暂无图片
编程学习 ·

c++数制2~16数进制的转换

通项公式: while(n!=0){ a[i]=n%d; n=(n/d); i++; } 其中n为要转换的十进制的数。d为要转换的数制,如二进制为2. #include<iostream> using namespace std;int main() {int i,n,d,a[100];//n 为要转换的十进制数,d为要转为的数制 while(cin>>n>>d){i=0;wh…
暂无图片
编程学习 ·

05 Pandas(2)

# Author:Nimo_Dingimport pandas as pd import numpy as np from pandas import Series,DataFrame# 数据表的合并 df1=DataFrame({name:[ZhangFei,GuanYu,a,b,c],data1:range(5) }) df2=DataFrame({name:[ZhangFei,GuanYu,A,B,c],data2:range(5) }) print(\n1、基于指定列进行…
暂无图片
编程学习 ·

[UML] 类图之间的关系 | 3.泛化关系

[UML] 类图之间的关系 | 3.泛化关系 3.泛化关系泛化(Generalization)关系也就是**继承关系**,用于描述父类与子类之间的关系,父类又称为基类或超类,子类又称为派生类 在UML中,泛化关系用带空心三角形的直线来表示 在代码实现时,使用面向对象的继承机制来实现泛化关系,在J…
暂无图片
编程学习 ·

leetcode 718.最长重复子数组

原题 718.最长重复子数组 2020年7月1日 每日一题题解 方法一 暴力法。 /*暴力法 @v7fgg 执行用时:2265 ms, 在所有 Java 提交中击败了5.00%的用户 内存消耗:39.3 MB, 在所有 Java 提交中击败了100.00%的用户 2020年7月1日 8:03 */ class Solution {public int findLength(int…
暂无图片
编程学习 ·

IT系统稳定性创新者:分布式软件,“笨马”先跑

(PerfMa CEO 李嘉鹏)早在2006年前后,IT系统稳定性就成为了当时集中式架构的挑战。随着互联网的快速兴起,当时的“Unix+小型机”架构遭遇了数据爆增的冲击。特别是在线交易、商业分析和数据库等关键业务系统,在2010年前后进入了TB甚至PB级,导致传统IT架构不堪重负,对IT系统…
暂无图片
编程学习 ·

前端项目如何管理

前端项目的管理分为两个维度:项目内的管理与多项目之间的管理。1. 项目内的管理在一个项目内,当有多个开发者一起协作开发时,或者功能越来越多、项目越来越庞大时,保证项目井然有序的进行是相当重要的。一般会从下面几点来考证一个项目是否管理得很好:可扩展性:能够很方便…
暂无图片
编程学习 ·

虚拟机VMware安装学习过程中遇到的几个问题

1.在安装VMware的时候刚开始因为版本不足的原因,电脑显示 Failed to initialize ploicy for cpu 后来我把它复制到百度上发现是我电脑版本过高的原因,于是又下载了VMware15.5.1版本 又查找了它的破解版。2.在安装的过程中还出现过屏幕就一个-,然后什么都不出现,于是查找资…
暂无图片
编程学习 ·

快速排序手撕模板(递归)

void quicksort(vector<int> arr,int left,int right) {if(right<left){return;}int low=left;int high=right;int base=arr[low]; //以最左边的第一个为基准数 //采用双指针方法while(low<left){while(high){if(high<=low) break;if(arr[high]>base){ //右…
暂无图片
编程学习 ·

[算法]最长公共前缀

题目编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。示例输入: [“flower”,“flow”,“flight”] 输出: “fl”输入: [“dog”,“racecar”,“car”] 输出: “” 解释: 输入不存在公共前缀。这是一道简单题,没什么说的 class Solut…
暂无图片
编程学习 ·

前端性能优化

浏览器渲染机制 Html解析成DOM树,Css解析成CSS树,将DOM树与CSSDOM规则树合并在一起生成Render树,遍历渲染树开始布局,计算每个节点的位置大小信息,将渲染树每个节点绘制到屏幕阻塞渲染当浏览器遇到一个script标记时,DOM构建将暂停,直至脚本完成执行,然后继续构建DOM。每…
暂无图片
编程学习 ·

OA、ERP、BPM 各自的功能和特点是什么?怎么配合使用?

​OA是Office Automation的简称,译为办公自动化,常用于企业内部事务管理。OA具有的几个功能:信息存储、数据管理、数据共享。因此,它的使用场景常分布在日常办公中,比如:公文管理、沟通工具、文档管理、项目管理、任务管理、会议管理、通讯录、工作便签、问卷调查、常用工…
暂无图片
编程学习 ·

浅析为什么开发中阿里禁用Select *查询

1、低效率原因 首先看下阿里开发手册中关于Mysql的描述: 4 - 1. 【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。 说明: 增加查询分析器解析成本。 增减字段容易与 resultMap 配置不一致。 无用字段增加网络 消耗,尤其是 text 类型的字…
暂无图片
编程学习 ·

Java 中内部类简单概念

概念:在一个类内部定义的类 1.内部类会生成独立的.class文件。文件名Outer$Inner.class 2.内部类可以访问外部类的私有属性,从而不破坏外部类的封装性 成员内部类(类比成员变量) 1.定义位置:类以内,方法以外 2.如何创建对象 Outer o = new Outer(); //创建外部类对象 Out…
暂无图片
编程学习 ·

jvm垃圾收集算法以垃圾收集器简介

jvm垃圾收集算法以垃圾收集器简介 每天多学一点点~ 话不多说,这就开始吧… 文章目录jvm垃圾收集算法以垃圾收集器简介1.前言2.内存模型判断机制3.垃圾收集算法3.1 分代收集理论3.2 标记-复制算法3.3 标记-清除算法3.4 标记-整理算法4.常用的垃圾收集器4.1 Serial收集器(-XX:+U…
暂无图片
编程学习 ·

C++ builder listview 自绘条形图

菜鸟的学习笔记,如果对你有用最好。高手请无视。ListView 要开 Doublebuffervoid __fastcall TForm1::ListView1CustomDrawSubItem(TCustomListView *Sender, TListItem *Item,int SubItem, TCustomDrawState State, bool &DefaultDraw) { DefaultDraw=true; int lef=0; T…