《Arduino技术及应用》课件—第10章-Inputoutput高级应用

上传人:sat****105 文档编号:290121137 上传时间:2022-05-09 格式:PPTX 页数:26 大小:2.77MB
返回 下载 相关 举报
《Arduino技术及应用》课件—第10章-Inputoutput高级应用_第1页
第1页 / 共26页
《Arduino技术及应用》课件—第10章-Inputoutput高级应用_第2页
第2页 / 共26页
《Arduino技术及应用》课件—第10章-Inputoutput高级应用_第3页
第3页 / 共26页
《Arduino技术及应用》课件—第10章-Inputoutput高级应用_第4页
第4页 / 共26页
《Arduino技术及应用》课件—第10章-Inputoutput高级应用_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《《Arduino技术及应用》课件—第10章-Inputoutput高级应用》由会员分享,可在线阅读,更多相关《《Arduino技术及应用》课件—第10章-Inputoutput高级应用(26页珍藏版)》请在金锄头文库上搜索。

1、物联网应用开发第十章第十章 I/OI/O口高级应用口高级应用目录调声函数1设置ADC参考电压4脉冲宽度测量函数及超声波测距2简易电子琴3外部中断5本章小结610.1调声函数v调声函数tone( )主要使用在Arduino连接蜂鸣器或扬声器发生的场合,其实质是输出一个频率可调的方波,以此驱动蜂鸣器或扬声器振动发声。1. tone( )功能:在一个引脚上产生一个特定频率的方波(50%占空比)。语法:tone(pin, frequency)tone(pin, frequency, duration)参数:pin,需要输出方波的引脚。frequency,输出的频率,单位Hz,类型unsigned in

2、t。duration,频率持续的时间,单位毫秒。类型unsigned long。返回值:无。10.1调声函数2. noTone( )功能:停止由tone( )产生的方波。如果没有使用tone( )将不会有效果。语法:noTone(pin)参数:pin,所要停止产生声音的引脚。返回值:无。注意:如果你想在多个引脚上产生不同的声音,你要在对下个引脚使用tone( )前对刚才的引脚调用。10.1调声函数图10-1 无源蜂鸣器模块3.无源蜂鸣器模块无源蜂鸣器模块(图10-1)是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、报警器和电子玩具等电子设备中。如果使用的是模块,则可直接连接到

3、扩展板;如果使用的是独立扬声器或者蜂鸣器,则只需在其正极与Arduino数字引脚之间连接一个100的限流电阻即可,连接方法如图10-2所示。图10-2 扬声器、蜂鸣器模块使用连接示意图10.2脉冲宽度测量函数及超声波测距Arduino提供的pulseIn( )函数用于检测指定引脚上脉冲信号的宽度。10.2.1 脉冲宽度测量函数其应用有如下特点:u功能:检测指定引脚上的脉冲信号宽度。例如,当要检测高电平脉冲时,pulseIn( )函数会等待指定引脚输入的电平变高,在变高后开始计时,直到输入电平变低时,计时停止。pulseIn( )函数会返回此脉冲信号持续的时间,即该脉冲的宽度。pulseIn(

4、)函数还可以设定超时时间。如果超过设定时间仍未检测到脉冲,则会退出pulseIn( )函数并返回0。当没有设定超时时间时,pulseIn( )函数会默认1秒钟的超时时间。u语法:pulseIn(pin,value) pulseIn(pin,value,timeout)10.2.1 脉冲宽度测量函数参数:pin,需要读取脉冲的引脚。value,需要读取的脉冲类型,为HIGH或LOW。timeout,超时时间,单位为微秒,数据类型为无符号长整型。返回值:换行返回脉冲宽度,单位为微秒,数据类型为无符号长整型。如果在指定时间内没有检测到脉冲,则返回0。10.2.2 超声波测距 超声波是频率高于2000

5、0Hz的声波,它的指向性强,能量消耗缓慢,在介质中传播的距离较远,因而经常用于测量距离。 超声波传感器的型号众多,这里介绍一款常见的超声波传感器。10.2.2 超声波测距1. SR04超声波传感器SR04(图10-5)是利用超声波特性检测距离的传感器。其带有两个超声波探头,分别用做发射和接收超声波。其测量范围是3-450cm。1图10-5 SR04超声波传感器10.2.2 超声波测距2. 超声波测距的工作原理如图10-6所示,超声波发射器向某一方向发射超声波,在发射的同时开始计时;超声波在空气中传播,途中碰到障碍物则立即返回,超声波接收器收到反射波则立即停止计时。声波在空气中的传播速度为340

6、m/s,根据计时器记录的时间C,即可计算出发射点距障碍物的距离s,即s=340m/st/2。这就是所谓的时间差测距法。图10-6 超声波发射/接收示意图10.2.2 超声波测距3. 超声波模块引脚SR04超声波模块有4个引脚,各功能如表10-1所列。表10-1 SR04超声波模块引脚引脚名称说明Vcc电源5VTrig触发引脚Echo回馈引脚Gnd地10.2.2 超声波测距4. 超声波模块的使用方法及时序图如图10-7所示,使用Arduino的数字引脚给SR04模块的Trig引脚至少10的高电平信号,触发SR04模块的测距功能。如图10-8所示,触发测距功能后,樓块会自动发送8个40kHz的超声

7、波脉冲,并自动检测是否有信号返回。如图10-9所示,若有信号返回,则Echo引脚会输出高电平,高电平持续的时间就是超声波从发射到返回的时间。此时可以使用PulseIn( )函数获取测距的结果,并计算出距被测物体的实际距离。这一步由模块内部自动完成。图10-7 Arduino发送触法信号图10-8 超声波模块发出超声波脉冲10.2.2 超声波测距图10-9 超声波模块返回测距结果10.2.2 超声波测距5. 连接示意图超声波测距示例连接示意图如图10-10所示。如图10-10所示,本示例将超声波模块的Trig引脚连接到Arduino的2号引脚,Echo引脚连接到Arduino的3号引脚。图10-

8、10 超声波测距示例连接示意图10.3 简易电子琴例子图10-12 简易电子琴项目连接示意图如图10-12所示,本项目使用7个按键分别连接7个引脚,并给每个引脚加上10K的下拉电阻以稳定引脚上的电平。Arduino通过依次检查各按键的状态来控制10号引脚上输出的方波,以驱动蜂鸣器发出各种不同的音调。10.4 设置ADC参考电压 基础 概念在使用analogRead( )函数读取模拟输入口的电压时,函数返回值的计算方法为analogRead(pin)函数返回值=当用户没有设置参考电压时,Arduino会默认使用工作电压作为参考电压。大多数Arduino控制器的工作电压都为5V,所以默认参考电压也

9、为5V。当要测量的电压较小时或对测量精度要求较高时,可以通过降低参考电压来使测量结果更精准。Arduino提供了内部参考电压,但内部参考电压并不准确,如果使用的话反而会使精度降低。在实际应用中,一般通过输人高精度的外部参考电压来提高检测精度。在Arduino控制器上有一个AREF引脚,可以从该引脚给Arduino输人外部参考电压,同时需要使用analogReference( )函数来设置Arduino使用外部参考电压。其调用形式为:analogReference(type);10.4 设置ADC参考电压其中参数type的可用选项如表10-2所列。选项说明DEFAULT默认当前Arduino工作

10、电压作为参考电压INTERNAL使用内部参考电压(当前使用UNO时为1.1V,当前使用ATmega8时为2.56V)该设置并不适用于Arduino MEGAINTERNAL1V1使用内部1.1V参考电压(仅适用于Arduino MEGA)INTERNAL2V56使用内部2.56V参考电压(仅适用于Arduino MEGA)EXTERNAL使用从AREF引脚输入的外部参考电压表10-2 ADC参考电压可用配置10.5 外部中断程序运行过程中时常需要监控一些事件的发生,如对某一传感器的检测结果做出反应。使用轮询的方式进行检测时效率较低,等待时间较长,而使用中断方式进行检测则可以达到实时检测的效果。

11、图10-13 中断结构10.5.1 外部中断的使用1. 中断引脚与中断编号在不同型号的Arduino控制器上,中断引脚的位置也不相同,只有中断信号发生在带有外部中断功能的引脚上,Arduino才能捕获到该中断信号并做出响应,表10-3列举了Arduino常见型号控制器的中断引脚所对应的外部中断编号。Arduino型号int0int1int2int3int4int5UNO23-MEGA2321201918Leonardo3201-Due所有引脚均可使用外部中断表10-3 常见Arduino控制器时中断编号10.5.1 外部中断的使用2. 中断模式为了设置中断模式,还需要了解设备触发外部中断的输入

12、信号类型。中断模式也就是中断触发的方式。在大多数Arduino上支持表10-4中的四种中断触发方式。模式名称说明LOW低电平触发CHANGE电平变化触发,即高电平变低电平、低电平变高电平RISING上升沿触发,即低电平变高电平FALLING下降沿触发,即高电平变低电平表10-4 可用的中断触发模式10.5.1 外部中断的使用3. 中断函数除了设置中断模式外,还需要编写一个响应中断的处理程序中断函数,当中断被触发后,便可以让Arduino运行该中断函数。中断函数就是当中断被触发后要去执行的函数,该函数不能带有任何参数,且返回类型为空,如:void Hello( ) Serial. println

13、(hello);当中断被触发后,Arduino便会执行该函数中的语句。10.5.1 外部中断的使用这些准备工作完成后,还需要在setup( )中使用attachInterrupt( )函数对中断引脚进行初始化配置,以开启Arduino的外部中断功能,其用法如下。(1)attachInterrupt(interrupt, function, mode)功能:对中断引脚进行初始化配置。参数:Interrupt,中断编号,注意,这里的中断编号并不是引脚编号。function,中断函数名,当中断被触发后即会运行此函数名称所代表的中断函数。mode,中断模式。(2)detachInterrupt(int

14、errupt)功能:禁用外部中断。参数:interrupt,需要禁用的中断编号。10.5.2 外部中断触发蜂鸣器报警数字红外障碍传感器(图1014)是一种通过红外光反射来检测障碍物的传感器。检测模块会发出调制过的38kHz红外光,红外光经障碍物反射后由一体化接收头接收。当检测范围内有障碍物时,模块输出低电平;当无障碍物时,模块输出高电平。图10-14 数字红外障碍传感器10.6 本章小结本章主要介绍了Arduino I/O口的高级应用,首先介绍了调声函数,其主要使用在Arduino连接蜂鸣器或扬声器发生的场合,其实质是输出一个频率可调的方波,以此驱动蜂鸣器或扬声器振动发声。其次介绍了脉冲宽度测量函数其功能是检测指定引脚上的脉冲信号宽度,利用pulseIn( )函数和超声波传感器来测量距离,使用analogRead( )函数读取模拟输入口的电压,外部中断主要介绍了一些常见的Arduino控制器的中断编号,利用中断函数进行中断。通过本篇的讲述可以更好的了解I/O口的使用。Thank You!

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号