目录

智能垃圾桶.................................................................................... 1

一、学习目标................................................................................... 2

知识目标....................................................................................... 2

技能目标....................................................................................... 2

二、背景知识................................................................................... 2

三、知识储备................................................................................... 3

按键开关....................................................................................... 2

OLED屏.........................................................................................4

LED................................................................................................5

面包板............................................................................................6

DS18B20温度传感器......................................................................4

舵机................................................................................................5

Arduino编程语句.............................................................................6

Arduino逻辑运算符........................................................................ 7

四、案例实现.................................................................................. 14

案例描述...................................................................................... 14

器械清单.......................................................................................15

电路接线...................................................................................... 16

电路设计...................................................................................... 16

电路仿真...................................................................................... 16

单元调试...................................................................................... 16

各个程序编写............................................................................... 21

五、任务扩展.................................................................................. 21

六、智能垃圾桶试验程序................................................................ 21

七、 知识扩展..................................................................................24

八、反思总结.................................................................................. 24

九,参考文献...................................................................................25

  • 学习目标

知识目标:

  1. 了解OLED显示屏工作原理
  2. 了解舵机原理
  3. 了解超声波模块工作原理
  4. 了解DS18B20温度传感器
  5. 了解按钮控制LED灯

技能目标:

1.学会使用if函数

2.串口通讯监视

3.学会任用do函数

4.学会while函数

5.学会自定义函数

6.学会舵机角度控制

二.背景知识

垃圾桶在我们身边随处可见,我们的目标是实现智能化生活,让垃圾桶智能化,在创造便利生活的同时,努力让智能垃圾桶融入每一个家庭的生活之中。迎接人工智能时代的来临,全力让生活充满智能。

三.知识储备

按键开关:四脚按键开关工作原理
  这种开关的工作原理,其实和普通按钮开关的工作原理差不多,由常开触点、常闭触点组合而成,在四脚按键开关中,常开触点的作用,就是当压力向常开触点施压时,这个电路就呈现接通状态;当撤销这种压力的时候,就恢复到了原始的常闭触点,也就是所谓的断开。这个施压的力,就是用我们的手去开按钮、关按钮的动作。总而言之,四脚按键开关的工作原理还是很好理解的。四脚按键开关怎么接
  
                   
  

上图是接线图,1、2 脚是一端,3、4脚是另一端,不同厂家标示不同。
  轻触开关是按一下接通电路,手松开后电路依然接通,再按一次电路断开;轻触按键是按下去接通电路,手松开电路就断开。
  由于元件体积小、机械强度差,为了可靠接通电路,降低接触电阻,用两组触点并联工作,所以有4个脚,而不是像继电器那样,一组是常开触点,另一组是常闭触点。四脚按键开关怎么接。
  上图是接线图,1、2 脚是一端,3、4脚是另一端,不同厂家标示不同。
  轻触开关是按一下接通电路,手松开后电路依然接通,再按一次电路断开;轻触按键是按下去接通电路,手松开电路就断开。
  由于元件体积小、机械强度差,为了可靠接通电路,降低接触电阻,用两组触点并联工作,所以有4个脚,而不是像继电器那样,一组是常开触点,另一组是常闭触点。

示范简单程序:

可以试一试打开串口监视器看看结果。

OLED屏:

OLED特点
(1)功耗低——与LCD相比,OLED不需要背光源,而背光源在LCD中是比较耗能的一部分,所以OLED是比较节能的。例如,24in的AMOLED模块功耗仅仅为440mw,而24in的多晶硅LCD模块达到了605mw。
(2)响应速度快——OLED技术与其他技术相比,其响应速度快,响应时间可以达到微秒级别。较高的响应速度更好的实现了运动的图像。根据有关的数据分析,其响应速度达到了液晶显示器响应速度的1000倍左右。
(3)较宽的视角——与其他显示相比,由于OLED是主动发光的,所以在很大视角范围内画面是不会显示失真的。其上下,左右的视角宽度超过170度。
(4)能实现高分辨率显示——大多高分辨率的OLED显示采用的是有源矩阵也就是AMOLED,它的发光层可以是吸纳26万真彩色的高分辨率,并且随着科学技术的发展,其分辨率在以后会得到更高的提升。
(5)宽温度特性——与LCD相比,OLED可以在很大的温度范围内进行工作,根据有关的技术分析,温度在-40摄氏度到80摄氏度都是可以正常运行的。这样就可以降低地域限制,在极寒地带也可以正常使用。
(6)OLED能够实现软屏——OLED可以在塑料、树脂等不同的柔性衬底材料上进行生产,将有机层蒸镀或涂布在塑料基衬上,就可以实现软屏。
(7)OLED成品的质量比较轻——与其他产品相比,OLED的质量比较小,厚度与LCD相比是比较小的,其抗震系数较高,能够适应较大的加速度,振动等比较恶劣的环境。

示例程序

看看这是不是你的结果。

LED:

发光二极管简称为LED。由含镓(Ga)、砷(As)、磷(P)、氮(N)等的化合物制成。

当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。在电路及仪器中作为指示灯,或者组成文字或数字显示。砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光,氮化镓二极管发蓝光。因化学性质又分有机发光二极管OLED和无机发光二极管LED。

面包板:面包板是由于板子上有很多小插孔,专为电子电路的无焊接实验设计制造的。由于各种电子元器件可根据需要随意插入或拔出,免去了焊接,节省了电路的组装时间,而且元件可以重复使用,所以非常适合电子调试和训练。         

示例程序:

了解程序后,看看串口监视器哦。

DS18B20:DS18B20(如上图)内部结构如图5-6所示,主要由4部分组成:温度传感器、64位ROM、非挥发的温度报警触发器TH和TI、配置寄存器。由图5-6可见,DS18B20只有一个数据输入输出口,属于单总线专用芯片之一。DS18B20工作时被测温度值直接以“单总线”的数字方式传输,大大提高了系统的抗干扰能力。其内部采用在线温度测量技术,测量范围为55~125°C,在-10~85℃时,精度为±0.5°C。每个DS18B20在出厂时都已具有唯一的64位序列号,因此一条总线上可以同时挂接多个DS18B20,而不会出现混乱现象。另外用户还可自设定非易失性温度报警上下限值TH和TL(掉电后依然保存)。DS18B20在完成温度变换后,所测温度值将自动与存储在TH和TL内的触发值相比较,如果测温结果高于TH或低于TL, DS18B20内部的告警标志就会被置位,表示温值超出了测量范围,同时还有报警搜索命令识别出温度超限的DS18B20。

舵机:指在自动驾驶仪中操纵飞机舵面(操纵面)转动的一种执行部件。分有:①电动舵机,由电动机、传动部件和离合器组成。接受自动驾驶仪的指令信号而工作,当人工驾驶飞机时,由于离合器保持脱开而传动部件不发生作用。②液压舵机,由液压作动器和旁通活门组成。当人工驾驶飞机时,旁通活门打开,由于作动器活塞两边的液压互相连通而不妨害人工操纵。此外,还有电动液压舵机,简称“电液舵机”。舵机的组成 一般来讲,舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路等,舵机的输入线共有三条,如图6所示,红色中间,是电源线,一边黑色的是地线,这辆根线给舵机提供最基本的能源保证,主要是电机的转动消耗。电源有两种规格,一是4.8V,一是6.0V,分别对应不同的转矩标准,即输出力矩不同,6.0V对应的要大一些,具体看应用条件;另外一根线是控制信号线,Futaba的一般为白色,JR的一般为桔黄色。另外要注意一点,SANWA的某些型号的舵机引线电源线在边上而不是中间,需要辨认。但记住红色为电源,黑色为地线,一般不会搞错。

示例程序:

Arduino 编程语句:打开sweep,分析分析看看结果。

  1. if :通过if指令,用户可以让Arduino判断某一个条件是否达到,并且根据这一判断结果执行相应的程序。

if(表达式) { 语句块 } [/c]  上述结构表示:如果 “表达式” 的条件得到满足则执行语句块。否则Arduino将不执行该语句块。(如图所示)

  1. while:  while循环将会连续地无限地循环,直到圆括号()中的表达式变为假。被测试的表达式变量必须被改变,否则while循环将永远不会中止。可以在代码改变测试变量,比如让该变量递增,或者通过外部条件改变测试变量,比如将一个传感器的读数赋值给测试变量。

while(表达式/循环条件){ 语句块/循环体 }先计算表达式的值,当值为真(非0)时, 执行循环体语句;执行完循环体语句,再次计算表达式的值,如果为真,继续执行循环体……这个过程会一直重复,直到表达式的值为假(0)才退出循环。其执行过程如图所示:

  1. set up函数:   当Arduino程序开始运行时会调用setup()函数。通常我们setup()函数其中初始化一些变量、引脚状态及一些调用的库等。当Arduino控制器通电或复位后,setup函数会运行一次。
  1. Loop函数:   在setup()函数对程序完成了初始化后,loop()函数将会运行。loop函数是一个循环体,在Arduino启动后,loop()函数中的程序将会不断运行。通过loop()函数你可以利用你的程序来控制Arduino。
  2. Arduino 库 :通过库的使用可以拓展Arduino开发板的功能。因为有了库,我们可以很轻松的实现Arduino与外部硬件的协作或进行数据通讯。

逻辑运算符:

<= ; >= 比较运算符用于和 if 联合使用,测试某一条件是否达到。例如测试Arduino的某一个引脚输入值是否达到设定数值。如果是则执行特定程序。换句话说,如果圆括号中的语句为真,大括号中的语句就会运行。否则,程序跳过该代码。【逻辑】-【比较运算符】

模块介绍

符号

名称

功能

==

等于

如果两个输入结果相等,则返回真。

!=

不等于

如果两个输入结果不相等,则返回真。

<

小于

如果第一个输入结果比第二个小,则返回真。

<=

小于等于

如果第一个输入结果小于或等于第二个输入结果则返回真。

>

大于

如果第一个输入结果比第二个大,则返回真。

>=

大于等于

如果第一个输入结果大于或等于第二个输入结果,则返回真。

oled配置:

有了iic操作函数,接着根据oled命令表封装相关操作函数,不知道oled操作命令的可以翻我之前的文章,在oled配置那里有详细介绍,搬过来用即可

oled写命令函数:void oled_Write_cmd(unsigned char cmd);

oled写数据函数:void oled_Write_data(unsigned char dat);

oled清屏函数:void oled_clear(void);

oled初始化函数:void oled_initial(void);

oled显示函数,这个函数是确定将要显示的位置,以及数据采样的格式:void oled_put_char_16x16(unsigned char x,unsigned char y,unsigned char t);
//设置显示坐标函数,t为0时,字符为8x16t为1时,字符为16x16

然后通过oled_Write_data(),将采样到的字符数据写入即可显示。

ds18b20配置(在之前文章也有讲过ds18b20如何驱动及运用):

根据ds18b20操作手册:

检测是否有ds18b20:unsigned char DS18B20_Check(void);

ds18b20初始化:void DS18B20_Init(void);

复位信号:void Rest_sign(void);

读一位数据:unsigned char DS18B20_Read_Bit(void);

读一字节数据:unsigned char DS18B20_Read_Byte(void);

写一字节数据:void DS18B20_Write_Byte(unsigned char dat);

开始信号:void DS18B20_Start(void);

获取温度函数:void get_Temperature(void);

  • 案例实现:

图一

再把所作的三个程序组装,智能垃圾桶的程序就出来了。

名称

数量

Arduino UNO开发板

1

杜邦线

1扎

OLED屏

1

面包板

1

DS18B20温度传感器

1

超声波模块

1

按钮

1

舵机

1

电池

2

案例描述:

  1. 按照电路图原理图连

红色引线表示5V电源,黑色引线表示接地口,黄色引线和橙色引线表示不同的信号线连接的引脚口也会不同,下文会对不同装置不同的信号引脚口进行分析。

  1. 编写DS18B20显示于OLED程序:

首先我们要用到第4行 #include“U8glib.h”这个关于OLED的库,#include <OneWire.h>

#include <DallasTemperature.h>

OneWire oneWire_9(9);

DallasTemperature sensors_9(&oneWire_9);

DeviceAddress insideThermometer;这都是温度传感器的库和必备条件,

其次自定义一个函数第24行 viod draw();这个函数中的u8g.就可以通过arduino把我们想输入资料或文字输入进OLED,第七行是OLED显示必须的代码,具体不做过多解释。第30行print(temperatrue);后文会提到它在loop函数中而draw()函数也在loop中。10,11行中的数字(1,10),(100,25)是字符的位置OLED板定义是128*64行。Long函数和int差不多都是字符定义成一个数字。

43行可以通过串口监视器观察变化

  1. 编写超声波控制舵机:

首先超声波模块有多个信号引脚Trig,Echo。

如图通过7行代码我们知道,我们将两个信号口设置成了Arduino的模拟引脚口 A2 A3. 切记这些命令是在set up 和loop函数之外,因为这样便于我们任意使用于这两个函数之间。第2行可知我们调用了关于舵机(servo)的库,并了解到servo.write可控制角度变化.   4行可知我们将舵机的引脚口设置为数字9号引脚,并且我们把这个舵机取名叫mysevo  切记舵机只可连接 3,5,6,9,10,11号引脚口。Echo INPUT输入信号,Trig OUTPUT输出信号,serial.begin 设置串口监视器切实观察舵机角度变化。 第13行中我们定义了距离如何取,并通过他的变化控制舵机角度。

7.编写按键控制LED灯程序:

将LED设置为8号引脚,使他输出高电流,其中按钮只是用作开关一样,不按按钮线路断开,按下开关线路闭合。

电路设计:

本实验主要是三部分,

  1. 通过Arduino和库实现舵机和超声波模块沟通连接.
  2. DS18B20温度值传输给OLED显示
  3. 简单程序按钮控制LED灯
  • 任务扩展:
  1. 制作一个靠近舵机能通过超声波自动打开的程序
  2. 制作一个温度传感器读取OLED显示屏的程序
  3. 制作一个按下按键,LED灯亮,松开熄灭的程序
  • 智能垃圾桶实验程序

程序编写:

  1. 任务要求

程序编写:

参数设置:

初始化:超声波接口Echo A2 ;Trig A3 变量距离;舵机设置 9号引脚;温度传感器4号数字引脚变量温度;OLED设置SCL设置A4;SDA设置A5;按钮设置为8号数字引脚。  延时1000毫秒。

它的程序就是以上程序的拼装,当你明白以上程序时相信你也会编写了。

#include <Servo.h>Servo servo_9;volatile int distance;float checkdistance_A2_A3() {digitalWrite(A2, LOW);delayMicroseconds(2);digitalWrite(A2, HIGH);delayMicroseconds(10);digitalWrite(A2, LOW);float distance = pulseIn(A3, HIGH) / 58.00;delay(10);return distance;}#include <OneWire.h>#include <DallasTemperature.h>#include "U8glib.h"String i="Tepture:";int s=0;//变量秒  用来显示U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);        // 小E开发板上面就是用的这个volatile int temperture;OneWire oneWire_4(4);DallasTemperature sensors_4(&oneWire_4);DeviceAddress insideThermometer;float ds18b20_4_getTemp(int w) {sensors_4.requestTemperatures();if(w==0) {return sensors_4.getTempC(insideThermometer);}else {return sensors_4.getTempF(insideThermometer);  }}void draw() {u8g.setFont(u8g_font_unifont); //  设置字体 这句必要u8g.drawStr( 1, 10, "Hello world!");//第一个是x第二个是y坐标u8g.setFont(u8g_font_ncenB14);//还是先设置一个字体u8g.setPrintPos(0,44);//然后设置一个位置u8g.print(i);//然后就是数据u8g.print(temperture);}void setup(){servo_9.attach(9);distance = 0;servo_9.write(0);delay(0);pinMode(A2, OUTPUT);pinMode(A3, INPUT);Serial.begin(9600);temperture = 0;sensors_4.getAddress(insideThermometer, 0);sensors_4.setResolution(insideThermometer, 9);Serial.begin(9600);}void loop(){distance = checkdistance_A2_A3();Serial.println(distance);if (distance <= 15) {servo_9.write(120);delay(500); }if (distance >= 35) {delay(1000);servo_9.write(0);delay(500); }delay(1000);temperture = ds18b20_4_getTemp(0);Serial.println(temperture);if(s!=millis()/10)s=millis()/10;//上面这一句是取系统运行秒数  单位ms除以1000就是秒u8g.firstPage(); do {draw(); }while( u8g.nextPage() ); //延迟一段时间后重新生成图片delay(10);}

七.知识拓展:

而实用,垃圾桶内内置蜂鸣器和RTC时钟模块,可以进行精准定时和报时。DS18B20提供的温度数据使得垃圾桶摇身一变成为了温度播报员。当夜幕降临,桶内内置的LED小夜灯可以将垃圾桶摇身一变成为可爱的小精灵,在寂静的黑夜中发出温暖而和蔼的光芒

  • 反思总结

1.通过这节课我们学会了超声波模块是如何工作尝试了让 OLED显示我们想要显示的内容,学会了按钮的工作原理,了解LED灯

2.软件方面,了解了if函数学会了自定义函数

3. 本节课所学内容为垃圾箱控制,OLED显视

参考文献

arduino中文社区

https://www.arduino.cn/forum.php

太极创客

http://www.taichi-maker.com/homepage/arduino-basic-tutorial-index/

此文章不用于商业性,非盈利手段,仅用于参考学习

arduino多功能垃圾桶相关推荐

  1. 基于Arduino的超声波垃圾桶

    基于Arduino的超声波垃圾桶 工作原理:当人靠近垃圾桶时,超声波传感器测出两者之间的距离,当距离小于设定的阈值是,舵机转动,垃圾桶盖打开.(这里设置的阈值是15cm) 材料清单: Arduino ...

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

       Arduino项目实战        -基于Arduino[智能垃圾桶]设计 第一次接触Arduino是在大一的时候,距离现在已经五年,当时一个简单的"电子琴"项目就让我抓耳 ...

  3. ARDUINO多功能灾难现成搜救机器人

    原文发表在ARDUINO社区,现转移到CSDN 原文地址:http://www.arduino.cn/thread-23376-1-1.html 针对矿难.地震等灾难现场的搜救专用机器人,具有越障能力 ...

  4. 基于Arduino的智能垃圾桶

    通过本次简单的Arduino智能垃圾桶小实验可以快速了解Arduino的基本用法 1.材料准备 Arduino UNO HC-SR04超声波模块 SG90舵机 杜邦线 电源 电脑 2.代码分析 电机的 ...

  5. 【arduino】超声波垃圾桶

  6. 使用Arduino开发ESP32:wifi基本功能使用

    1.建立网络(AP) 2.连接网络(STA) 3.扫描网络 1.建立网络(AP) 只需两步:1.引用WiFi库include<WiFi.h> 2.启动AP网络WiFi.softAP(ssi ...

  7. esp8266使用Arduino编程实现自动浇水、OTA升级功能

    创作前情: 上海疫情已有一段时间,从三月初算起来已过了一个多月,当时用了泡沫箱种了些小香葱,这几天把它搬到了室外阳台,由于浇水不方便,想着做一个自动浇水的设备. 实现目的: 可以远程控制浇水 可以实时 ...

  8. 基于Wemos的感应开盖垃圾桶

    基于Wemos的感应开盖垃圾桶 一.绪论 1.研究背景 2.研究意义 二.系统总体设计方案 1.设计思路 2.硬件平台功能介绍 3.软件开发环境 三.设计思路实现步骤 1.Wemos的IO口研究驱动蜂 ...

  9. all3dp.com网站中全部Arduino项目(2022.7.1)

    arduino项目] 原文地址:https://all3dp.com/topic/arduino/ 最受欢迎20220707 项目组-1. [2022 年 10 个最有用的 Arduino 项目:]( ...

最新文章

  1. 人群密度估计--Leveraging Unlabeled Data for Crowd Counting by Learning to Rank
  2. 【springboot】application.yml配置文件中数据库密码password加密后显示
  3. RocketMQ(四)—— 单机与集群安装
  4. Oracle全文索引之三 检索
  5. 【leetcode】Multiply Strings(middle)
  6. 一个不完全恢复的疑惑?
  7. 使用VBA通过Excel生产Word报告
  8. sdf贴图方式之tri-planar贴法
  9. 世界上程序员最好的学习法:费曼学习法
  10. 如何卸载电脑中linux系统软件,Linux下如何卸载软件
  11. 张建伟老师管理制度:阿里新零售意欲何为?
  12. 英雄联盟账号服务器查询,lol战绩查询系统
  13. 学好这五个PPT技巧,让你老板刮目相看
  14. 对计算机专业有用的书籍
  15. 创新创造蓝海 远程接入行业又添新品
  16. 伟大的意大利的左后卫
  17. 【路径规划】邮政运输网络中的邮路规划和邮车调度【含Matlab源码 648期】
  18. Revit二次开发:VS常用快捷键
  19. 2022第五届中国(济南)国际眼科医学及眼科医疗设备展览会
  20. D盘文件备份linux,多渠道讲解常用的Linux备份方式

热门文章

  1. FileInfo和DirectoryInfo
  2. tinyG 入门 05
  3. 【C#】创建、解析 xml 文件(XmlDocument 方式)
  4. 升级iOS 15后iPhone相机无法正常使用怎么办?
  5. 备注一下从MarginNote到Scrivener的过程
  6. HTML首字下沉的编码,css如何实现首字下沉效果?伪元素+浮动实现效果(代码实例)...
  7. 箭头函数和Promise用法
  8. DIY简单功能的torrentkitty种子爬虫
  9. aliez歌词_aliez歌词歌词是什么意思 aliez是什么意思
  10. win10 tightvnc 连接(多个)树莓派远程桌面控制