Arduino编程控制与应用课件:完成倒车雷达功能的实现_第1页
Arduino编程控制与应用课件:完成倒车雷达功能的实现_第2页
Arduino编程控制与应用课件:完成倒车雷达功能的实现_第3页
Arduino编程控制与应用课件:完成倒车雷达功能的实现_第4页
Arduino编程控制与应用课件:完成倒车雷达功能的实现_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Arduino

编程控制与应用Arduino

智能控制的应用完成倒车雷达功能的实现同学们在乘坐汽车时是不是会经历倒车入库这样的环节,在我们的生活中,倒车时一般车辆都会有雷达感应装置来辅助我们进行倒车时的距离监测。接下来我们可以利用Arduino

来实

现这一功能,今天我们将会自己动手来实现倒车雷达。导入新授New

teaching一、倒车雷达的基本知识三、超声波声波测距模块的电路连接五、第三方库的安装二、超声波测距的原理四、超声波模块工作原理六、液晶显示屏七、1602液晶显示模块常用的控制函数八、蜂鸣器的使用九、蜂鸣器常用控制函数目

录倒车雷达,或称泊车辅助系统是一种安装在汽车前、后保险杠上能在汽车泊车或者倒车时使用的安全辅助装置

(如图所示),它能够使用声音或者更为直观的显示告知

驾驶员周围障碍物的情况,帮助驾驶员扫除视野死角和视

线模糊的缺陷,提高驾驶的安全性。(一)定义及作用一、倒车雷达的基本知识倒车雷达通常包含超声波探头、控制主机以及显示提醒装置等部件。超声波探头集成了超声

波发射和接收探测功能,控制主机则将超声波探头采集信号进行处理,转换成距离信息,然后通

过显示提醒装置显示距离信息或发出报警提示声

音。泊车辅助系统部件组成如图所示。(二)结构及工作原理宣示提醒装置控制主机超声波探头一、倒车雷达的基本知识二

、超声波测距的原理根据声波的频率范围,声波可分为次声波、声波和超声波。其中20Hz~20kHz

的范围内时,可为人耳所感觉,称为声波;20Hz

以下的机械振动人耳听不到,称为次

声波;频率高于20kHz

的机械振动称为超声

。人类发声频率范围(65~1100Hz)人类听觉频率范围(约20~20000Hz)蝙蝠发声频率范围(约10000~120000Hz)蝙蝠听觉频率范围(约10000~120000Hz)海豚发声频率范围(约7000~120000Hz)海豚听觉频率范围(约150~150000Hz)超声波在空气中传播速度为340m/s(0.034cm/μs),

控制板检测到超声波模块ECHO

端子高电平的持续时间(超声波来回时间)为t(μs),

则可以计算出超声波模块与障碍物之间的距离s=0.034×(t/2),

计算得到的距离

s单位是厘米(cm),

如图所示。反射声波超声波倒车雷达就是利用超声波测距原理,测量出障碍物到车体的距离,并通过显示屏来显示倒车距离

。原声波探头与被测目标的距离12发射/接收

探头被测目标SR04超声波测距模块有VCC、TRIG、ECHO、GND

共4个接线端子,其中VCC

接+5V

电源正极,GND

接电源负极,TRIG

是触发信号

,ECHO

则是回声信号输出。本节案例中我们将VCC

、TRIG

、ECHO

、GND

这四个端子分别接入到5V、2

号数字管脚、3号数字管脚、GND,

连接完成后如图所示。超声波传感器型号众多,本书中我们介绍一个比较常用的超声波测距模块是“SR04”

。SR04

带有1个超声波发射探头、1个超声波接收探头以及控制电路(如

图所示),测量范围约是2~400cm,

测量

精度可达3mm。接收探头三、超声波声波测距模块的电路连接如图所示,当控制板朝TRIG端子发送10微秒高电平信号后,模块被触发,其发射探头朝某一方向发射超声波信号,发0射超声波信号的同时开始计时。超声波碰到障碍物后立即返回,接收探头接收到被障碍物反射回来的信号后立即停止计时。ECHO

高电平的持续时间就是超声波信号在空气中的飞行时间。10微秒的高电平信号循环发出8个40KHz

的脉冲检测高电平的持续时间四、超声波模块工作原理库就是把一些函数封装好,保存为独立文件,使用时直接调用就行。Arduino

的库通常包含标准库和第三方库。标准

库在完成Arduino

IDE的安装后就已经自动导入,编

程时只需要直接调用就行。第三方库则需要编程人员

自行导入。五、第三方库的安装与计算机上输入字符一样,在1602液晶显示模块上显示字符时也有光标。在控制输出字符之前需要将光标移动到所需要输出字符的位置上,每输出一个字符,光标会自动跳到下一个输出位置。1602液晶显示模块的行号和列号都是从“0”开始的,如图所示,第一行的行号是row0,第一列的列号是column0。本任务中采用了可以显示2行,每行16个字符的液晶显示模块,因此也称1602

液晶显示模块,如图所示。六、液晶显示屏columnO

column152rowOrow11602液晶显示模块通常集成了字库芯片,通过LiquidCrystal类库提供的API,

可以很方便地被用来显示英文字母和一些

符号。常见的1602液晶显示模块有16个接线端子,每个端子的符号及连接说明如表

5-

1-2所示。其中,3号端子V0

是液晶显示屏对比

度的调整控制端子。该端子接到电源正极

时对比度最弱,显示痕迹最淡;该端子若

接地时对比度最最高,但对比度过高时会

产生“鬼影”,同样无法清晰看到显示内

容。所以该端子通常连接一个10KΩ的可调

电阻使用。端子编号符号说明端子编号符号说明1VSS显示屏负极9D2数据总线2VDD显示屏正极10D3数据总线3V0对比度控制11D4数据总线4RS指令/数据寄存器选择12D5数据总线5RW数据写入/读取选择13D6数据总线6E使能14D7数据总线7DO数据总线15A背景灯正极8D1数据总线16K背景灯负极4号端子RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。5号端子RW

为读写

信号选择,高电平时进行读操作,低电平时进行写操作,本书示例中不涉及读操作,所以一般都在程序初始化时将这个端子设为低电位。6号端子E

为使能端,当E

端子由高电平跳变成低电平时,液晶模块执行命令。三、超声波声波测距模块的电路连接211602液晶显示模块的控制涉及了7个端子,指令比较复杂。Arduino

很大的优势就是可以调用关联库的相应函数,并通过设置对应参数实现复杂的功能控制。1602液晶显示模块使用到的函数库文件名为"Liquid

Crystal",可以使用语句“#include<LiquidCrystal.h>”调用其中LiquidCrystal.h文件。该函数库中常用的函数如下:功能:清除屏幕上的所有内容,并将光标定位到屏幕

左上角,即前面图7-14中的row0

、column0

对应的位置。

语法:Icd.clear(),这里的Icd

是指从LiquidCrystal

类库

中创建的对象名称。返回值:无。这是一个硬件初始化函数,用于定义1602液晶显示模块中控制端子和数据总线端子与Arduino

控制板的连接情

况。(

)clear()

数七、1602液晶显示模块常用的控制函数(

)

LiquidCrystal()函

数功能:设置光标位置。将光标定位在指定位置,如setCursor(3,0)是指将光标定位在第1排第4列。语法:

Icd.setCursor(col,row)。返回值:无。功能:设置显示内容的行列数。语法:Icd.begin(cols,rows),

其中cols指显示模块允许显示内

容的列数;rows

指显示模块允许显示内容的行数。(

)setcursor()

函数(

)begin()

函数(

)print()

函数(

)home()

函数功能:将文本输出到LCD

上。每输出一个字符,光标

就会向后移动一格。语法:Icd.print(data)。七、1602液晶显示模块常用的控制函数将光标移动到左上角的位置(也即row0、column0对应的位置),语法:

Icd.home()。无源他激型蜂鸣器的工作发声原理是:方波信号输入谐振装置转换为

声音信号输出,如图所示。1谐振装置2有源自激型蜂鸣器的工作发声原理是:直流电源输入经过振荡系统的放大、取样电路后

,输入谐振装置转换为声音信号输出,如图所

示。蜂鸣器(如图所示)的发声原理由振动装置和谐振装置组成,而蜂鸣器又分为无源他激型与有源

自激型两种。这两种类型从外观上不易区分。八、蜂鸣器的使用取样电路放大电路谐振

装置tone()

函数可以产生固定频率的PWM

信号来驱动扬声器发声。控制蜂鸣器的管脚、声调(声音的频率)

和发声时间长度都可以通过调整函数内相关参数实现。

tone()

函数可以有两种表达方式:

tone(pin,frequency,duration);tone(pin,frequency);no

Tone()函数用来停止tone()

函数发声。no

Tone(pin)函数中的参数pin表示停止所对应管脚

编号的tone()

函数发声。(

)no

Tone()函

数(

)tone()

函数九、蜂鸣器常用控制函数任务实施Task

Implementation序号软件及硬件名称数量1Arduino

IDE2联网的电脑1台/人3键盘1个/人4鼠标1个/人5Arduino

UNO开发板1块/人6LCD1602显示屏扩展板1块/人7USB串口线1根/人(一)软件及硬件准备一、任务准备1.注意Arduino开发板与电脑的连接是否可靠;2.注意Arduino开发板与电脑连接端口的匹配;3.注意输出电压,避免开发板被烧坏;4.注意Arduino

开发板与LCD1602显示屏扩展板连接时,针脚要对孔,插入时要小心,避免阵脚变歪或折断。一、任务准备(二)场地设备准备任务实施前需要做好场地防护准备以及检查实训场地和设备设施是否及存在安全隐患,如不正常请汇报老师并进行处理方可实施任务。

(三)安全防护准备1234二、实施步骤(一)认识LCD1602

显示屏扩展板(1)尺寸:68.6*53.4mm(2)使用管脚:2、3、4、5、6、7、8、9、10、11、12、13(3)电阻数量:一个10kΩ可调电阻(4)LCD1602显示屏数量:1个(复用4、5、6、7、8、9、10管脚)(5)超声波传感器:使用2、3管脚(6)蜂鸣器:使用11管脚(7)使用说明:LCD1602

显示屏扩展板使用超声波传感器检测前方障碍物,经过解算后将障碍物到传感器的距离通过显示屏展示出来,检测范围为20-500cm±10cm,

当距离过小时,通过蜂鸣器报警,如此模拟汽车倒车的场景应用。(8)电阻数量:一个10kΩ

可调电阻。二、实施步骤(一)认识LCD1602显示屏扩展板LCD1602

显示屏的使用4、5、6、11、12、13、14管脚分别接入UNO

板的4、5、6、7、8、9、10管脚,1、16接入GND,2

、15接入5V电源,管脚7、8、9、10空置。管脚3接入10kΩ

可调电阻。超声波传感器使用2、3管脚,蜂鸣器使用11管脚。将对应的驱动程序通过软件烧写到UNO

板上通电即可使用该扩展板。通过10kΩ可调电阻调整显示屏

的亮暗程度。步骤1:连接线的方头端接口连接ArduinoUNO开发板,另一端USB接口连接电脑。(二)控制电路连接二、实施步骤步骤2:LCD1602显示屏扩展板安装在Arduino开发板上。二、实施步骤(二)控制电路连接二、实施步骤(三)控制程序编写与上传◎

sketchjun21a|Arduino

1.8.13

文件编情项目工具帮勋nm231

当制编辘文档名称代码编与区域上传代码此处编评的时候有进度提示编译结来堤示区域步骤1:打开Arduino

IDE软件,进入界面。步骤2:在工具-端口-选择对应的端口。若分不清端口,先把开发板连接上,查看端口,有COM1、COM3、COM4、COM5、COM6;断开开发板连接,查看端口,有COM3、COM4、COM5、COM6;

少了一个COM10端口,那么COM10就是对应的端口。(三)控制程序编写与上传302|Arduino

1.8.13工

助自动格式化项目存档修正编码并重新加载管理库…串口监视器串口绘图器WiFi101/WiFiNINA

Firmware开发板:"Arduino

Uno'

口取得开发板信息编程器:"AVRISP

mkll"

烧录引导程序102|Arduino

1.8.13工

帮助自动格式化项目存档修正编码并重新加载管理库…串口监视器串口绘图器WiFi101/WifiNINAFirmware开发板:"Arduino

Uno°取得开发板信息编程器:"AVRISP

mkll"

烧录引导程序Ctrl+TCtrl+Shift+lCtrl+Shift+MCtrl+Shift+LUpdaterCOM10COM3

COM4

COM5

COM6连接开发板断开开发板二、实施步骤Ctrl+TCtrl+Shift+ICtrl+Shift+MUpdater串行端口COM3COM5COM6步骤1:新建一个文档,//后的代码可删除;在【代码编写区域】下方输入如图所示代码。sketch_704§1

#include

<LiquidCrystal

.h>//

引入1602LCD

显示屏第三方库2//定义显示屏引脚号3

const

intrs=4,en=6,d4=7,d5=8,d6=9,d7=10;4Liquidcrystal

lcd(rs,en,d4,d5,d6,d7);//实例化一个显示屏1cd

5//初始化函数void

setup

(){10

void

loop()(111

2(四)LCD

动态显示任务效果:

LCD显示屏向左流动显示“Hello,inwinic!”。二

、实施步骤步骤2:分别在【代码编写区域】中的“voidsetup(){”

和“void

loop({”

下方输入如图所示

代码

。sketch_704§1

#include

<Liquidcrystal

.h>//

引入1602LCD

显示屏第三方库2//定义显示屏引脚号3

const

intrs=4,en=6,d4=7,d5=8,d6=9,d7=10;4Liquidcrystal

lcd(rs,en,d4,d5,d6,d7);//实例化一个显示屏1cd

5//

初始化函数6void

setup(){pinMode

(5,OUTPUT);//将5号引脚设置为输出模式digitalWrite

(5,

LOW);//将5号引脚设置为低电平lcd.

begin(16,2);//设置显示屏的显示大小10lcd.

print

("Hello,Inwinic!"

);//定义显示的显示内容11delay

(1000);//延时1000ms

12}13

//loop循环函数14voidloop(){15lcd.scrollDisplayLeft();//把显示的内容向左滚动一格16

delay(500);//延时500ms|

17}(四)LCD动态显示二、实施步骤步骤3:如图所示单击“上传”按钮,通过USB转串口芯片将程序烧写到开发板的主控芯片中◎

sketch

jul07a|Arduino

1.8.13文

项目

助sketchjul07aS

点击上传

#include<Liquidcrystal

.h>constint

rs=4,en=6,d4=7,d5=8,d6=9,d7=10;Liquidcrystal

1ed(rs,en,d4,d5,d6,d7);void

setup()(pinMode(5,OUTPUT);digita1Write(5,LOW);1cd.begin(16,2);led.print

("Hello,inwinic!");delay(1000);void

loop((led.scrollDisplayLeft

();delay(500);|(四)LCD动态显示编译完成。二、实施步骤步骤4:若操作顺利,将出现“上传成功”的提示,如图所示,LCD1602

显示屏扩展板上出现

“Hello,inwinic!”的动态显示循环。二、实施步骤(四)LCD动态显示二

、实施步骤(

四)LCD

动态显示步骤5:控制程序解析(1)首先引入1602LCD显示屏第三方库,接着定义显示屏的管脚与arduino

UNO板管脚的对应

关系,即rs—4、en—6、D4—7、D5—8、D6—9、D7—10。然后使用硬件初始化函数LiquidCrystal,采用四位数据线的连接方式(即D4—D7)创建一个LiquidCrystal的实例。(2)进行初始化设置。第一步,将5号管脚设为输出模式并设置为低电平(使液晶屏处于写操作

状态);第二步,设置显示屏的显示区域的行列数为2行16列(即2行,每行16个字符);第三步,显

示字符串内容“Hello,Inwinic!”并延时1s。(

3

)

在loop函数中,利用Icd.scrollDisplayLeft

函数把显示内容向左滚动一格,并延时500ms

重新执行loop函数刷新效果。#include<Liquidcrystal

.h

>//引入1602LCD

显示屏第三方库

//定义显示屏引脚号const

int

rs

=4,en

=6,d4

=7,d5

=8,d6

=9,d7

=10;Liquidcrystal

lcd(rs,en,d4,d5,d6,d7);//实例化一个显示屏1cd//初始化函数void

setup(){pinMode(5,

OUTPUT);//将5号引脚设置为输出模式digitalWrite(5,

LOW);//将5号引脚设置为低电平lcd.begin

(16,2);

//设置显示屏的显示大小lcd.print

("Hello,Inwinic!

"

);//

定义显示的显示内容delay

(1000);//延时1000ms//loop

循环函数void

loop(){lcd.scrollDisplayLeft

();//把显示的内容向左滚动一格delay

(500);//

延时500ms|引入1602LCD显示屏第三方库定义显示屏引脚号实例化一个显示屏

Icd将5号引脚配置为输出模式,并将电平拉低设置显示屏的显示大小setup

函数定义显示的显示内容延时1000ms把显示的内容向左滚动一格loop函数延时500ms(四

)LCD动态显示二、实施步骤步骤1:新建一个文档,//后的代码可删除;在【代码编写区域】下方输入如图所示代码。sketch_703§1#include

<LiquidCrystal

.h>//引入1602LCD

显示屏第三方库2//

定义显示屏引脚号3

constintrs=4,en=6,d4=7,d5=8,d6=9,d7=10;4

Liquidcrystal

lcd(rs,en,d4,d5,d6,d7);//

实例化一个显示屏1cd

5//初始化函数6void

setup(){void

loop

(){1112(

)LCD静态显示任务效果:

LCD显示屏静态显示“Hello,inwinic!”。二、实施步骤步骤2:分别在【代码编写区域】中的“voidsetup(){”

“void

loop(){”

下方输入如图所示

代码

。void

setup

(){pinMode

(5,

OUTPUT

);//

将5号引脚设置为输出模式

digitalwrite

(5

,LOW);//

将5号引脚设置为低电平

lcd.begin

(16,2);//

设置显示屏的显示大小10

lcd.

print

("Hello,Inwinic!

"

);/

/定义显示的显示内容111213

void

loop(){14

lcd.setCursor(0,1)

;//移动光标到特定位置15lcd.print(millis

()/1000);/

/显示系统运行的时间

16}(五

)LCD静态显示二、实施步骤步骤3:如图所示单击“上传”按钮,通过USB转串口芯片将程序烧写到开发板的主控芯片中。#include<LiquidCrystal

.h>const

int

rs=4,en

=6,d4=7,d5=8,d6=9,d7=10;Liquidcrystal

1cd(rs,en,d4,d5,d6,d7);voidsetup()(pinMode(5,

OUTPUT);digita1write(5,LOW);1ed.

begin(16,2);lcd.print

("Hello,Inwinic!"

);void

loop(){lcd.setcursor

(0,1);1ed.

print(millis

()/1000);|(

)LCD静态显示二、实施步骤◎sketchjul07a|Arduino

1.8.13文件编辑

项目

工具帮助点击上传sketch_jul07aS步骤4:若操作顺利,将出现“上传成功”的提示,如图所示,LCD1602显示屏扩展板静态显示

“Hello,inwinic!”,显示屏右下角的数字是累

计显示的时间。(五

)LCD静态显示二、实施步骤二、实施步骤(五

)LCD静态显示步骤5:控制程序解析(1)首先引入1602LCD

显示屏第三方库,接着定义显示屏的管脚与arduino

UNO板管脚的对应

关系,即rs—4、en—6、D4—7、D5—8、D6—9、D7—10。

然后使用硬件初始化函数LiquidCrystal,采用四位数据线的连接方式(即D4—D7)创建一个LiquidCrystal的实例。(2)进行初始化设置。第一步,将5号管脚设为输出模式并设置为低电平(使液晶屏处于写操作

状态);第二步,设置显示屏的显示区域的行列数为2行16列(即2行,每行16个字符);第三步,显

示字符串内容

“Hello,Inwinic!”。(

3

)

在loop函数中,利用Icd.setCursor函数把光标移动到第2行第1列的位置,显示系统运行的

时间(单位为s)。#include<LiquidCrystal.h>//引入1602LCD显示屏第三方库//定义显示屏引脚号const

int

rs

=4,en

=6,d4

=7,d5

=8,d6=9,d7

=10;LiquidCrystal

lcd(rs,en,d4,d5,d6,d7);//实例化一个显示屏1cd//初始化函数void

setup

(){pinMode(5,

OUTPUT);//

将5号引脚设置为输出模式digitalwrite

(5,

LOW

);//将5号引脚设置为低电平lcd.

begin(16,2);//

设置显示屏的显示大小lcd.

print

("Hello,Inwinic!"

);//定义显示的显示内容void

loop(){1cd.setcursor

(0,1);//移动光标到特定位置lcd.

print(millis

()/1000);//

显示系统运行的时间1602LCD显示屏第三方库定义显示屏引脚号实例化一个显示屏将5号引脚配宣为输出模式,并将电平拉低设置显示屏的显示大小setup

函数

·定义显示的显示内容延时1000ms移动光标到特定位置loop

数显示系统运行的时间(

)LCD静态显示二、实施步骤步骤1:新建一个文档,//后的代码可删除;在【代码编写区域】下方输入如图所示代码。sketch_701§1//使用宏定义的方式定义

声波的引脚为2、3#define

trigPin3

#define

echoE

3float

;//

定义一个浮点型变量来存储最终结果float

temp

;//

定义一个浮点型变量来存储计算过程数值

7//初始化函数8

void

setup

(){10}1

1

//loop循环函数1

2

void

loop(){

1

314}(六)超声波测距二

、实施步骤步骤2:分别在【代码编写区域】中的“voidsetup(){”和

“void

loop(){”下方输入如图所示

代码。7//

初始化函数8voidsetup(){Serial.begin

(9600);//定义串口波特率为960010

pinMode(trigPin,

OUTPUT);

//将trigPin

设置为输出模式11

pinMode(echoPin,

INPUT

);//

将echoPin设置为输入模式

1

213

//loop

循环函数14

void

loop(){1

5

digitalWrite(trigPin,

LOW);//将trigPin设置为低电平16

delayMicroseconds

(2);//延时2微秒17

digitalWrite(trigPin,HIGH

);//

将trigPin设置为高电平1

8

delayMicroseconds

(10);//延时10微秒1

9

digita1write(trigPin,

LOW);//

将trigPin设置为低电平

2021

temp

=float(

pulseIn(echoPin,

HIGH

));//

计算echoP:22

distance=(temp*

17)/1000;//

计算测量的距离

2324

Serial.print

(”

探头与障碍物之间的距离=

"

);//在串口监视25

Serial.print(distance);//在串口监视器中打印距离26

Serial.println

("厘米");//在串口监视器中打印“厘米”并换名27

delay

(1000);//

延时1000ms|(六)超声波测距二、实施步骤步骤3:如图所示单击“上传”按钮,通过USB

转串口芯片将程序烧写到开发板的主控芯片中float

distance;//

存储最终结果

float

temp;//存储计算过程数值voidsetup(){Serial.begin

(9600);pinMode(trigPin,OUTPUT);pinMode(echoPin,

INPUT);voidloop(

(digitalWrite

(trigPin,LOW);

delayMicroseconds

(2);digita1write

(trigPin,HIGH);delayMieroseconds(10);digita1write

(trigPin,

LOW);(六)超声波测距编译完成。二、实施步骤sketchjul07a|Arduino1.8.13

文件编辑项目工具帮助sketch

julo7aS#define

trigPin#define

echoPin点击上传23步骤4:若操作顺利,将出现“上传成功”的提示,并打开串口监视器,可监视

到探头与障碍物之间的距离。◎

COM10一

□×发送探头与障碍物之间的距离=11.95厘米人探头与障碍物之间的距离=11.95厘米探头与障碍物之间的距离=12.05厘米探头与障碍物之间的距离=11.95厘米探头与障碍物之间的距离=11.95厘米探头与障碍物之间的距离=11.95厘米探头与障碍物之间的距离=11.95厘米探头与障碍物之间的距离=12.05厘米探头与障碍物之间的距离=11.95厘米探头与障碍物之间的距离=11.95厘米探头与障碍物之间的距离=12.05厘米探头与障碍物之间的距离=11.95厘米V☑自动滚屏□Showtimestamp换行符

9600波特率清空输出(六)超声波测距二、实施步骤二

、实施步骤(六)超声波测距步骤5:控制程序解析(1)首先使用宏定义#define

定义超声波模块管脚与arduino

UNO板管脚的对应关系,即trig

一2、echo—3。

接着定义两个浮点型变量,其中distance

用来存储最终结果,temp

用来存储计算过程

的中间值。(2)在初始化函数中设置串口通信波特率,将trigPin管脚定义为输出模式,echoPin

管脚定义为

输入模式。(

3

)

在loop

函数中,利用超声波测距的原理测出超声波传递的时间存储在变量temp

中,并利用

公式计算其对应的距离存储在变量distance中,然后在串口监视中打印出距离值及相应的文字。使用宏定义的

方式定义超声波的发射和接

收引脚定义一个浮点型变量distance来存储最终结果定义一个浮点型变量temp来存储计算过程数值定义串口波特

率为9600将

trigPin设置

为输出模式将echoPin设

置为输入模式读取超声波测

量值计算距离值将距离值打印在串口监视器中delayMicroseconds(10);//

延时10微秒digita1write

(trigPin,LOW);//将trigPin设置为低电平temp=

float(pulseIn(echoPin,HIGH));//计算echoPin处于高电平的时长distance=(temp*17)

/1000;//

计算测量的距离Serial.print

("

探头与障碍物之间的距离=");//在串口监视器中打印”探头与障碍物之间的距离="Serial.print(distance);//在串口监视器中打印距离Serial.print1n("

厘米");//在串口监视器中打印“厘米”并换行delay

(1000);//

延时1000ms//使用宏定义的方式定义超声波的引脚为2、3#define

trigPin2#define

echoPin

3floatdistance;//定义一个浮点型变量来存储最终结果floattemp;//定义一个浮点型变量来存储计算过程数值

//初始化函数void

setup()(Serial.begin

(9600);//定义串口波特率为9600pinMode(trigPin,OUTPUT);//将trigPin设置为输出模式

pinMode(echoPin,INPUT

);//

将echoPin设置为输入模式//1oop

循环函数void

loop(){(六)超声波测距digita1write(trigPin,

LOW);//

将trigPin

delayMicroseconds(2);

//

延时2微秒

digita1write(trigPin,HIGH);//将trigPin设置为低电平设置为高电平二、实施步骤setup

函数loop

函数步骤1:在文件夹中找到超声波与库文件中的“sketch_702”文件,并用ArduinoIDE

打开。sketch

70220213/18:46文件夫库文件2021/3/318:52文件夹超声波与库文件共享

查看

复制路径粘贴快捷方式剪贴板

组织(七)超声波与库文件↑

1

实训项目>实训27-美丽的'乐章”>超声波与库文件二、实施步骤名称

修改日期类型大小新建项目·轻

访

问新建全部取消

反向选择选择重命名

新建

文件夹历史记录

打开固定到

复制

快速访问搜索”超声波与库文件文件

主页下

载文

档步骤2:添加库文件,先复制库文件名称“SRO4”,

点击项目

加载库

管理库;搜索库名称找到相应的库文件点击安装。打开管理库

添加库类型全部

主题全部选择顺本AsyneSsnarbyLnisLlamasMore

infoby

Jereny

Lindsay

oJeremylindsayniMorsinfoCESartCaap

i

c

(

choPin,trigPin);long

distance;void

setup((Serial,begin

(9600);delay(1000);void

1oop()(distance=AAA.Distance();Serial.print

("

探头与障碍物之间的距离=

"

);

Serial.print(distance);Serial.print1n("

厘米");e3RP(七)超声波与库文件复制库名称+↑二、实施步骤sketch_702#inelude

5R04.h

#definetrigPin2库文件的名称二

、实施步骤(七)超声波与库文件步骤3:若搜索不到相应的库文件,可以通过另一种方法来添加,打开库文件复制“SRO4”

文件夹,下一步在电脑中找到并打开arduino

的文件夹,然后打开libraries

文件夹

“SR04”

粘贴进去就完成了。复制

“SRO4”

库文件移动到复制到找到arduino的文件夹打开库文件添加库文件二、实施步骤(七)超声波与库文件步骤1:新建一个文档,//后的代码可删除;分别在【代码编写区域】的“void

setup(){”和

"void

loop(){“下方输入如图所示代码。sketch_7051V/

初始化函数void

setup

(){pinMode

(

11,OUTPUT

);//

设置11号引脚为输出模式5//loop

循环函数void

loop

(){digitalWrite

(11,LOW

);//

将11号引脚设置为低电平

delay

(300);//

延时300msdigitalwrite

(11,HIGH

);//将11号引脚设置为高电平1

0

delay

(1000);//延时1000ms,数值越小,声音越急促

11}(八)蜂鸣器二、实施步骤步骤2:如图所示单击“上传”按钮,通过USB转串口芯片将程序烧写到开发板的主控芯片中(八)蜂鸣器voidsetup

()(pinMode

(11,

OUTPUT);void

1oop()目digita1Write

(11,LOW);delay(300);digita1Write

(11,HIGE);delay(1

000);//数值越小,声音越急促编译完成。二、实施步骤◎

sketchjul07a|Arduino1.8.13文件编辑项目工具帮助setch

julo7aS点击上传步骤3:若操作顺利,将出现“上传成功”的提示,上传成功后,蜂鸣器会发出滴滴的声音,响

0.3s停1s,

以此循环。(八)蜂鸣器二、实施步骤二、实施步骤(八)蜂鸣器步骤4:控制程序解析通过初始化函数将11号管脚定义为输出模式。

在loop

函数中,设置11号管脚的电平的高低和延时的长短实现蜂鸣器发声的调节。//初始化函数void

setup(){pinMode

(11,

OUTPUT);//

设置11号引脚为输出模式//1oop

循环函数void

loop(){digita1write

(11,

LOW

);//

将11号引脚设置为低电平delay

(300);//

延时300msdigitalwrite

(11,HIGH

);//将11号引脚设置为高电平delay

(1000);//

延时1000ms,

数值越小,声音越急促将11号引脚配置为输出模式将11号引脚

的电平拉低延时300ms将11号引脚

的电平拉高延时1000mssetup

函数loop函

数sketch_706§

1

#include

<SR04

.h>/

/引入超声波的库文件2#include<Liquidcrystal.h>//引入显示屏的库文件3long

distance;/

/定义一个长整数型的变量4int

val;

//定义一个整数型变量5

const

int

trigPin=2,echoPin=3,buzzerPin

=11;//定义三个常量来定义超声波

const

int

rs

=4,en

=6,d4

=7,d5

=8,d6

=9,d7

=10;

//定义显示屏的

SR04

AAA

=SR04

(echoPin,trigPin);//实例化一个超声波AAA8

Liquidcrystal

BBB(rs,en,d4,d5,d6,d7);//

实例化一个显示屏BBB步骤1:新建一个文档,//后的代码可删除;在【代码编写区域】的下方输入如图所示代码。(九)泊车辅助系统二、实施步骤步骤2:分别在"void

setup(){”

“voidloop(){”下方输入如图所示代码。sketch_706§8LiquidCrystalBBB(rs,en,d4,d5,d6,d7);

//实例化一个显示屏BBB9//初始化函数10

voidsetup(){pinMode

(5,

OUTPUT

);//5

号引脚设置为输出模式digitalwrite

(5,LOW);//5

号引脚俞出低电平1

3

BBB.

begin(16,2);//设置显示的长和宽1

4

pinMode

(11,OUTPUT

);//11

号引脚设置为输出模式

1516//1oop

循环函数17

void

loop()(delay

(100);//

延时100ms1

9

distance=AAA.Distance();//

将测量的距离保存在变量distance中20BBB.

setcursor(0,0);//将光标移动到显示屏的指定位置

BBB

.print("distance:");//

在显示屏中打印"distance:"BBB.print(distance);

//显示屏中显示距离23BBB.print("cm"

);//显示屏中显示“cm”if(distance<=60){

//判断距离是否小于或等于60,若条件成立则进入循环if

(distance<=30){//判断距离是否小于或等于30,若条件成立则进入循环26

buzzerY();//调用buzzerY函数

2728

else{29

val=(distance-30)*20;//计算蜂鸣器响的频率30buzzerX(val);//调用buzzerx

函数并传入参数valelse{34

digita1write(buzzerPin,HIGH);//

蜂鸣器停止(九)泊车辅助系统二、实施步骤步骤3:最后在【代码编写区域】的下方输入如图所示代码。sketch_706§36}37//自定义函数,可传入参数改变蜂鸣器响的频率38void

buzzerX(int

delayTime){digitalWrite

(buzzerPin,LOW

);//蜂鸣器引脚设置为高电平

delay(200);//

延时200msdigitalWrite

(buzzerPin,HIGH

);/delay(delayTime);//

延时delayTime

43}44//自定义函数,使蜂鸣器一直响45

void

buzzerY(){(九)泊车辅助系统digitalWrite

(buzzerPin,

LOW);//

蜂鸣器引脚设置为低电平

47}二、实施步骤/蜂鸣器引脚设置为低电平

ms

数值越小,声音越急促步骤4:如图所示单击“上传”按钮,通过USB

转串口芯片将程序烧写到开发板的主控芯片中◎

sketchjul07a|Arduino

1.8.13文件

助Dsketchjulo7as≠include

<SRO4.h>#include

<Liquidcrystal

.h>long

distance;int

val;const

int

trigPin=2,echoPin=3,buzzerPin=11;const

int

rs=4,en

=6,d4

=7,d5

=8,d6=9,d7

=10;8R04AAA=8R04(echoPin,trigPin);Liquidcrystal

BBB(rs,en,d4,d5,d6,d7);void

stup((pinMode(5,OUTPUT);digita1write

(5,LOW);BBB.

begin(16,2);pinMode(11,OUTPUT);void

loop()「delay(100);(九)泊车辅助系统编译完成。二、实施步骤点击上传步骤5:若操作顺利,将出现“上传成功”的提示,如图所示,LCD1602

显示屏扩展板显示“distance:134cm”,其距离为探头与障碍物之间的距离,由超声波发出信号和接收信号反馈出来

,当距离过近时蜂鸣器会发出蜂鸣。(九)泊车辅助系统二、实施步骤distance:134Cm步骤6:控制程序解析(1)首先引入超声波和1602LCD

显示屏第三方库,接着定义一个长整型变量distance用来存储超声波所测距离的最终结果,

定义一个整型变量val用来存储计算得到(决定蜂鸣器发声频率)的值。(2)利用整型常量定义超声波、蜂鸣器、显示屏的管脚与arduino

UNO板管脚的对应关系,超声波为:tigPin—2、

echoPin—3,蜂鸣器为:buzzerPin—11,显示屏为:rs—4

、en—6

、D4—7

、D5—8

、D6—9

、D7—10。(3)使用超声波和液晶显示屏函数创

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论