Arduino编程控制与应用 课件 能力模块五 掌握Arduino智能控制的应用_第1页
Arduino编程控制与应用 课件 能力模块五 掌握Arduino智能控制的应用_第2页
Arduino编程控制与应用 课件 能力模块五 掌握Arduino智能控制的应用_第3页
Arduino编程控制与应用 课件 能力模块五 掌握Arduino智能控制的应用_第4页
Arduino编程控制与应用 课件 能力模块五 掌握Arduino智能控制的应用_第5页
已阅读5页,还剩146页未读 继续免费阅读

下载本文档

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

文档简介

Arduino编程控制与应用能力模块五掌握Arduino智能控制的应用任务一完成倒车雷达功能的实现导入同学们在乘坐汽车时是不是会经历倒车入库这样的环节,在我们的生活中,倒车时一般车辆都会有雷达感应装置来辅助我们进行倒车时的距离监测。接下来我们可以利用Arduino来实现这一功能,今天我们将会自己动手来实现倒车雷达。新授Newteaching1目录一、倒车雷达的基本知识三、超声波声波测距模块的电路连接五、第三方库的安装二、超声波测距的原理四、超声波模块工作原理六、液晶显示屏七、1602液晶显示模块常用的控制函数八、蜂鸣器的使用九、蜂鸣器常用控制函数一、倒车雷达的基本知识(一)定义及作用

倒车雷达,或称泊车辅助系统是一种安装在汽车前、后保险杠上能在汽车泊车或者倒车时使用的安全辅助装置(如图所示),它能够使用声音或者更为直观的显示告知驾驶员周围障碍物的情况,帮助驾驶员扫除视野死角和视线模糊的缺陷,提高驾驶的安全性。

一、倒车雷达的基本知识(二)结构及工作原理

倒车雷达通常包含超声波探头、控制主机以及显示提醒装置等部件。超声波探头集成了超声波发射和接收探测功能,控制主机则将超声波探头采集信号进行处理,转换成距离信息,然后通过显示提醒装置显示距离信息或发出报警提示声音。泊车辅助系统部件组成如图所示。

二、超声波测距的原理1根据声波的频率范围,声波可分为次声波、声波和超声波。其中20Hz~20kHz的范围内时,可为人耳所感觉,称为声波;20Hz以下的机械振动人耳听不到,称为次声波;频率高于20kHz的机械振动称为超声波。2超声波在空气中传播速度为340m/s(0.034cm/μs),控制板检测到超声波模块ECHO端子高电平的持续时间(超声波来回时间)为t(μs),则可以计算出超声波模块与障碍物之间的距离s=0.034×(t/2),计算得到的距离s单位是厘米(cm),如图所示。

超声波倒车雷达就是利用超声波测距原理,测量出障碍物到车体的距离,并通过显示屏来显示倒车距离。三、超声波声波测距模块的电路连接1超声波传感器型号众多,本书中我们介绍一个比较常用的超声波测距模块是“SR04”。SR04带有1个超声波发射探头、1个超声波接收探头以及控制电路(如图所示),测量范围约是2~400cm,测量精度可达3mm。2SR04超声波测距模块有VCC、TRIG、ECHO、GND共4个接线端子,其中VCC接+5V电源正极,GND接电源负极,TRIG是触发信号输入,ECHO则是回声信号输出。本节案例中我们将VCC、TRIG、ECHO、GND这四个端子分别接入到5V、2号数字管脚、3号数字管脚、GND,连接完成后如图所示。

四、超声波模块工作原理

如图所示,当控制板朝TRIG端子发送10微秒高电平信号后,模块被触发,其发射探头朝某一方向发射超声波信号,发0射超声波信号的同时开始计时。超声波碰到障碍物后立即返回,接收探头接收到被障碍物反射回来的信号后立即停止计时。ECHO高电平的持续时间就是超声波信号在空气中的飞行时间。五、第三方库的安装

库就是把一些函数封装好,保存为独立文件,使用时直接调用就行。Arduino的库通常包含标准库和第三方库。标准库在完成ArduinoIDE的安装后就已经自动导入,编程时只需要直接调用就行。第三方库则需要编程人员自行导入。六、液晶显示屏1本任务中采用了可以显示2行,每行16个字符的液晶显示模块,因此也称1602液晶显示模块,如图所示。21602液晶显示模块的行号和列号都是从“0”开始的,如图所示,第一行的行号是row0,第一列的列号是column0。

与计算机上输入字符一样,在1602液晶显示模块上显示字符时也有光标。在控制输出字符之前需要将光标移动到所需要输出字符的位置上,每输出一个字符,光标会自动跳到下一个输出位置。三、超声波声波测距模块的电路连接11602液晶显示模块通常集成了字库芯片,通过LiquidCrystal类库提供的API,可以很方便地被用来显示英文字母和一些符号。常见的1602液晶显示模块有16个接线端子,每个端子的符号及连接说明如表5-1-2所示。其中,3号端子V0是液晶显示屏对比度的调整控制端子。该端子接到电源正极时对比度最弱,显示痕迹最淡;该端子若接地时对比度最最高,但对比度过高时会产生“鬼影”,同样无法清晰看到显示内容。所以该端子通常连接一个10KΩ的可调电阻使用。24号端子RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。5号端子RW为读写信号选择,高电平时进行读操作,低电平时进行写操作,本书示例中不涉及读操作,所以一般都在程序初始化时将这个端子设为低电位。6号端子E为使能端,当E端子由高电平跳变成低电平时,液晶模块执行命令。

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

1602液晶显示模块的控制涉及了7个端子,指令比较复杂。Arduino很大的优势就是可以调用关联库的相应函数,并通过设置对应参数实现复杂的功能控制。1602液晶显示模块使用到的函数库文件名为“LiquidCrystal”,可以使用语句“#include<LiquidCrystal.h>”调用其中LiquidCrystal.h文件。该函数库中常用的函数如下:(一)LiquidCrystal()函数这是一个硬件初始化函数,用于定义1602液晶显示模块中控制端子和数据总线端子与Arduino控制板的连接情况。(二)clear()函数功能:清除屏幕上的所有内容,并将光标定位到屏幕左上角,即前面图7-14中的row0、column0对应的位置。语法:lcd.clear(),这里的lcd是指从LiquidCrystal类库中创建的对象名称。返回值:无。七、1602液晶显示模块常用的控制函数

(三)begin()函数功能:设置显示内容的行列数。语法:lcd.begin(cols,rows),其中cols指显示模块允许显示内容的列数;rows指显示模块允许显示内容的行数。(四)home()函数将光标移动到左上角的位置(也即row0、column0对应的位置),语法:lcd.home()。(五)setcursor()函数功能:设置光标位置。将光标定位在指定位置,如setCursor(3,0)是指将光标定位在第1排第4列。语法:lcd.setCursor(col,row)。返回值:无。(六)print()函数功能:将文本输出到LCD上。每输出一个字符,光标就会向后移动一格。语法:lcd.print(data)。八、蜂鸣器的使用

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

蜂鸣器(如图所示)的发声原理由振动装置和谐振装置组成,而蜂鸣器又分为无源他激型与有源自激型两种。这两种类型从外观上不易区分。九、蜂鸣器常用控制函数

(一)tone()函数tone()函数可以产生固定频率的PWM信号来驱动扬声器发声。控制蜂鸣器的管脚、声调(声音的频率)和发声时间长度都可以通过调整函数内相关参数实现。tone()函数可以有两种表达方式:tone(pin,frequency,duration);tone(pin,frequency);(二)noTone()函数noTone()函数用来停止tone()函数发声。noTone(pin)函数中的参数pin表示停止所对应管脚编号的tone()函数发声。任务实施2TaskImplementation一、任务准备(一)软件及硬件准备序号软件及硬件名称数量1ArduinoIDE/2联网的电脑1台/人3键盘1个/人4鼠标1个/人5ArduinoUNO开发板1块/人6LCD1602显示屏扩展板1块/人7USB串口线1根/人一、任务准备(二)场地设备准备任务实施前需要做好场地防护准备以及检查实训场地和设备设施是否及存在安全隐患,如不正常请汇报老师并进行处理方可实施任务。(三)安全防护准备11.注意Arduino开发板与电脑的连接是否可靠;22.注意Arduino开发板与电脑连接端口的匹配;

33.注意输出电压,避免开发板被烧坏;

44.注意Arduino开发板与LCD1602显示屏扩展板连接时,针脚要对孔,插入时要小心,避免阵脚变歪或折断。

二、实施步骤(一)认识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开发板上。

二、实施步骤(三)控制程序编写与上传

步骤1:打开ArduinoIDE软件,进入界面。

二、实施步骤(三)控制程序编写与上传

步骤2:在工具-端口-选择对应的端口。若分不清端口,先把开发板连接上,查看端口,有COM1、COM3、COM4、COM5、COM6;断开开发板连接,查看端口,有COM3、COM4、COM5、COM6;少了一个COM10端口,那么COM10就是对应的端口。

连接开发板

断开开发板二、实施步骤(四)LCD动态显示

步骤1:新建一个文档,//后的代码可删除;在【代码编写区域】下方输入如图所示代码。

任务效果:LCD显示屏向左流动显示“Hello,inwinic!”。二、实施步骤(四)LCD动态显示

步骤2:分别在【代码编写区域】中的“voidsetup(){”和“voidloop(){”下方输入如图所示代码。

二、实施步骤(四)LCD动态显示

步骤3:如图所示单击“上传”按钮,通过USB转串口芯片将程序烧写到开发板的主控芯片中。

二、实施步骤(四)LCD动态显示

步骤4:若操作顺利,将出现“上传成功”的提示,如图所示,LCD1602显示屏扩展板上出现“Hello,inwinic!”的动态显示循环。

二、实施步骤(四)LCD动态显示

步骤5:控制程序解析(1)首先引入1602LCD显示屏第三方库,接着定义显示屏的管脚与arduinoUNO板管脚的对应关系,即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函数中,利用lcd.scrollDisplayLeft函数把显示内容向左滚动一格,并延时500ms。重新执行loop函数刷新效果。二、实施步骤(四)LCD动态显示二、实施步骤(五)LCD静态显示

步骤1:新建一个文档,//后的代码可删除;在【代码编写区域】下方输入如图所示代码。

任务效果:LCD显示屏静态显示“Hello,inwinic!”。二、实施步骤(五)LCD静态显示

步骤2:分别在【代码编写区域】中的“voidsetup(){”和“voidloop(){”下方输入如图所示代码。

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

步骤3:如图所示单击“上传”按钮,通过USB转串口芯片将程序烧写到开发板的主控芯片中。

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

步骤4:若操作顺利,将出现“上传成功”的提示,如图所示,LCD1602显示屏扩展板静态显示“Hello,inwinic!”,显示屏右下角的数字是累计显示的时间。

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

步骤5:控制程序解析(1)首先引入1602LCD显示屏第三方库,接着定义显示屏的管脚与arduinoUNO板管脚的对应关系,即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函数中,利用lcd.setCursor函数把光标移动到第2行第1列的位置,显示系统运行的时间(单位为s)。二、实施步骤(五)LCD静态显示二、实施步骤(六)超声波测距

步骤1:新建一个文档,//后的代码可删除;在【代码编写区域】下方输入如图所示代码。

二、实施步骤(六)超声波测距

步骤2:分别在【代码编写区域】中的“voidsetup(){”和“voidloop(){”下方输入如图所示代码。

二、实施步骤(六)超声波测距

步骤3:如图所示单击“上传”按钮,通过USB转串口芯片将程序烧写到开发板的主控芯片中。

二、实施步骤(六)超声波测距

步骤4:若操作顺利,将出现“上传成功”的提示,并打开串口监视器,可监视到探头与障碍物之间的距离。

二、实施步骤(六)超声波测距

步骤5:控制程序解析(1)首先使用宏定义#define定义超声波模块管脚与arduinoUNO板管脚的对应关系,即trig—2、echo—3。接着定义两个浮点型变量,其中distance用来存储最终结果,temp用来存储计算过程的中间值。(2)在初始化函数中设置串口通信波特率,将trigPin管脚定义为输出模式,echoPin管脚定义为输入模式。(3)在loop函数中,利用超声波测距的原理测出超声波传递的时间存储在变量temp中,并利用公式计算其对应的距离存储在变量distance中,然后在串口监视中打印出距离值及相应的文字。二、实施步骤(六)超声波测距二、实施步骤(七)超声波与库文件

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

二、实施步骤(七)超声波与库文件

步骤2:添加库文件,先复制库文件名称“SR04”,点击项目→加载库→管理库;搜索库名称找到相应的库文件点击安装。

复制库名称打开管理库添加库二、实施步骤(七)超声波与库文件

步骤3:若搜索不到相应的库文件,可以通过另一种方法来添加,打开库文件复制“SR04”文件夹,下一步在电脑中找到并打开arduino的文件夹,然后打开libraries文件夹将“SR04”粘贴进去就完成了。二、实施步骤(七)超声波与库文件

打开库文件复制“SR04”库文件添加库文件找到arduino的文件夹二、实施步骤(八)蜂鸣器

步骤1:新建一个文档,//后的代码可删除;分别在【代码编写区域】的“voidsetup(){”和“voidloop(){”下方输入如图所示代码。

二、实施步骤(八)蜂鸣器

步骤2:如图所示单击“上传”按钮,通过USB转串口芯片将程序烧写到开发板的主控芯片中。

二、实施步骤(八)蜂鸣器

步骤3:若操作顺利,将出现“上传成功”的提示,上传成功后,蜂鸣器会发出滴滴的声音,响0.3s停1s,以此循环。

二、实施步骤(八)蜂鸣器

步骤4:控制程序解析通过初始化函数将11号管脚定义为输出模式。在loop函数中,设置11号管脚的电平的高低和延时的长短实现蜂鸣器发声的调节。

二、实施步骤(九)泊车辅助系统

步骤1:新建一个文档,//后的代码可删除;在【代码编写区域】的下方输入如图所示代码。

二、实施步骤(九)泊车辅助系统

步骤2:分别在“voidsetup(){”和“voidloop(){”下方输入如图所示代码。

二、实施步骤(九)泊车辅助系统

步骤3:最后在【代码编写区域】的下方输入如图所示代码。

二、实施步骤(九)泊车辅助系统

步骤4:如图所示单击“上传”按钮,通过USB转串口芯片将程序烧写到开发板的主控芯片中。

二、实施步骤(九)泊车辅助系统

步骤5:若操作顺利,将出现“上传成功”的提示,如图所示,LCD1602显示屏扩展板显示“distance:134cm”,其距离为探头与障碍物之间的距离,由超声波发出信号和接收信号反馈出来,当距离过近时蜂鸣器会发出蜂鸣。

二、实施步骤(九)泊车辅助系统

步骤6:控制程序解析(1)首先引入超声波和1602LCD显示屏第三方库,接着定义一个长整型变量distance用来存储超声波所测距离的最终结果,定义一个整型变量val用来存储计算得到(决定蜂鸣器发声频率)的值。(2)利用整型常量定义超声波、蜂鸣器、显示屏的管脚与arduinoUNO板管脚的对应关系,超声波为:tigPin—2、echoPin—3,蜂鸣器为:buzzerPin—11,显示屏为:rs—4、en—6、D4—7、D5—8、D6—9、D7—10。(3)使用超声波和液晶显示屏函数创建一个超声波实例和一个显示屏实例。(4)进行初始化设置。第一步,将5号管脚设为输出模式并设置为低电平(使液晶屏处于写操作状态);第二步,设置显示屏的显示区域的行列数为2行16列(即2行,每行16个字符);第三步,将11号管脚设为输出模式。(5)在loop函数中,首先将超声波检测的距离存储在变量distance中,并在显示屏中实时显示该距离值。接着根据距离值distance的大小不同进行下一步操作:当distance<30cm时,调用子函数buzzerY使蜂鸣器一直响;当30cm≤distance≤60cm时,调用子函数buzzerX使蜂鸣器随着距离变得越小,声音越急促;当distance>60cm时,使蜂鸣器停止发声。(6)自定义子函数buzzerX可以使蜂鸣器根据测得的距离值改变发声频率,距离越近发声越急促;自定义子函数buzzerY则是使蜂鸣器一直响。二、实施步骤(九)泊车辅助系统随堂讨论3Practiceontheclass随堂讨论如果以SR04超声波测距模块相关库文件的导入为例来介绍第三方库的导入方法。导入步骤有哪些呢?请简要叙述出来。1.各组派代表统计遇到的问题。2.各组就各自的主要问题进行交流,并分享解决方法。Arduino编程控制与应用能力模块五掌握Arduino智能控制的应用任务二

完成入门级线控底盘功能的实现导入在车辆行驶中电机的控制、舵机的控制、编码器计数、定速巡航等功能是不是听起来就很炫酷,今天我们就将会学习如何使用Arduino来实现这些功能,来由自己编写出控制底盘的代码事件。新授Newteaching1目录一、电机转速控制二、电机转速的读取三、PID控制基础知识一、电机转速控制

直流有刷电机主要由定子、转子、换向器等部件组成。如图所示。当整个电枢绕组即转子将按逆时针旋转,输入的直流电能就转换成转子轴上输出的机械能。直流有刷电机的好处是比较容易控制速度和方向。

1.直流有刷电机的组成一、电机转速控制

一般可以通过PWM(Pulsewidthmodulation,脉冲宽度调制)的方式来实现输出模拟信号的效果。Arduino输出的PWM信号频率固定(约490Hz)的方波,而通过改变信号每个周期高低电平所占的比例(占空比),可以得到近似输出不同电压的效果,如图所示。2.脉冲宽度调制(PWM)一、电机转速控制

直流有刷电机不宜在高温、易燃易爆等环境下使用,而且由于电机使用了电刷作为电流变换的部件,所以需要定期更换或清理接触部位磨擦所产生的污物。3.直流有刷电机的维护一、电机转速控制

一些常见的微型直流有刷电机如图所示。4.常见的微型直流有刷电机二、电机转速的读取

电机转速的读取,使用到了Arduino的外部中断功能。如下图所示,中断函数的第1个参数是中断号,中断号为0时,表示使用2号管脚;中断号为1时,表示使用3号管脚。第2个参数是中断时被调用的子函数名,一般将中断时需要执行的指令都放在该子函数中。第3个参数是触发类型,一般有RISING、FALLING和CHANGE。1.电机转速的读取二、电机转速的读取

如下图所示,当检测到指定管脚的输入电动势从5V降到0V时,属于FALLING条件;当检测到指定管脚的输入电动势从0V升到5V时,属于RISING条件;而CHANGE条件则是包含了上述两种条件。2.电机转速的读取条件二、电机转速的读取

实训套件中的直流电机尾部都安装了一个编码器模块,按要求连接好线束后,电机每旋转一圈,2号或3号管脚就会收到11个类似上图的脉冲,通过计算单位时间内的脉冲个数就可以求得电机的旋转速度。3.求取电机的旋转速度三、PID控制基础知识

将偏差的比例、积分和微分通过线性组合构成控制量,用该控制量对受控对象进行控制,称为PID算法,实际中也有P、PI和PD控制算法。其中Kp、Ki、Kd分别为比例系数、积分系数、微分系数。PID控制适用于温度、压力、流量、液位等几乎所有场合,不同场合仅仅是PID参数应设置不同,只要参数设置得当均可以达到很好的效果。(一)PID控制概述三、PID控制基础知识

比例系数Kp的作用:反应系统当前最基本的误差,能提高系统的动态响应速度;能迅速反映误差,从而减少误差,但是不能消除误差。比例系数Kp的调节:范围一般是:0.1--100。(1)如果增益值取0.1,PID调节器输出变化为十分之一的偏差值。(2)如果增益值取100,PID调节器输出变化为一百倍的偏差值。(3)初调时,选小一些,然后慢慢调大,直到系统波动足够小时,再调节积分或微分系数。(二)各系数作用分析1.比例系数Kp的作用及调节三、PID控制基础知识

积分系数Ki的作用:反映系统的累积误差,理论上能消除系统稳态误差,提高无差度。积分系数Ki的调节:积分时间常数的定义是,偏差引起输出增长的时间。(1)积分时间设为1秒,则输出变化100%所需时间为1秒。(2)初调时要把积分时间设置长些,然后慢慢调小直到系统稳定为止。(二)各系数作用分析2.积分系数Ki的作用及调节三、PID控制基础知识

微分系数Kd的作用:反应系统误差的变化率,具有预见性,们可以预见偏差的变化趋势,产生超前的控制效果。微分系数Kd的调节:微分值是偏差值的变化率。如果通过比例、积分参数的调节还是收不到理想的控制要求,就可以调节微分时间。初调时把这个系数设小,然后慢慢调大,直到系统稳定。(二)各系数作用分析3.微分系数Kd的作用任务实施2TaskImplementation一、任务准备(一)软件及硬件准备一、任务准备(二)场地设备准备任务实施前需要做好场地防护准备以及检查实训场地和设备设施是否及存在安全隐患,如不正常请汇报老师并进行处理方可实施任务。(三)安全防护准备11.注意Arduino控制开发套件与电脑的连接;22.注意连接端口的匹配;

33.注意Arduino控制开发套件的供电;

44.注意使用含有库文件的程序时,检查ArduinoIDE中是否存在该库文件,若无则要添加。

二、实施步骤(一)控制电路连接

步骤1:首先给Arduino控制开发套件供上220v电,通过旋钮使内部电源B输出的电压为12V左右,再将线控小车驱动板与电源B接通,最后将连接线的方头端接口连接ArduinoUNO开发板,另一端USB接口连接电脑。

二、实施步骤(二)控制程序编写与上传

步骤1:打开ArduinoIDE软件,进入界面。

二、实施步骤(二)控制程序编写与上传

步骤2:在工具-端口-选择对应的端口。若分不清端口,先把开发板连接上,查看端口,有COM1、COM3、COM4、COM5、COM6;断开开发板连接,查看端口,有COM3、COM4、COM5、COM6;少了一个COM10端口,那么COM10就是对应的端口。

二、实施步骤(三)电机的控制

步骤1:新建一个文档,//后的代号可删除;在【代码编写区域】中的输入如图所示代码。

二、实施步骤(三)电机的控制

步骤2:在“voidsetup(){”的下方输入如图所示代码。

二、实施步骤(三)电机的控制

步骤3:最后在“voidloop(){”的下方输入如图所示代码。

二、实施步骤(三)电机的控制

步骤4:点击上传,如果操作顺利,就会显示上传成功,然后电机进行工作。可更改程序中PWM的值(范围0-255)来改变电机的转速,达到控制电机的效果。

二、实施步骤(三)电机的控制

步骤5:控制程序解析:分别定义四个整数型常量motor_left、motor_left1、motor_right、motor_right1并分别赋值为6/9/10/11。6/9控制小车左轮电机的正反转,10/11控制小车右轮电机的正反转。定义一个整数型变量PWM并赋值50,该值代表电机转速的控制量,范围为0~255。

二、实施步骤(四)编码器计数的实现

步骤1:新建一个文档,//后的代号可删除;在【代码编写区域】中的输入如图所示代码。

二、实施步骤(四)编码器计数的实现

步骤2:再输入如图所示代码。

二、实施步骤(四)编码器计数的实现

步骤3:在“voidsetup(){”下方输入如图所示代码。

二、实施步骤(四)编码器计数的实现

步骤4:最后在“voidloop(){”下方输入如图所示代码。

二、实施步骤(四)编码器计数的实现

步骤5:点击上传,如果操作顺利,就会显示上传成功,然后打开串口监视器,波特率选择9600,串口发送“L”是测试左轮,发送“R”是测试右轮。选择好测试的轮子后,将轮子匀速转动一圈,然后串口发送“P”,串口就会打印出轮子转动一圈的脉冲数。操作流程就是:发送L或R——然后转动轮子一圈——发送P。二、实施步骤

步骤6:控制程序解析:(1)定义两个整数型常量encoder_Left1、encoder_Right1并分别赋值为2、3。定义两个易变变量encoder_Left、encoder_Right,定义一个布尔变量K。(2)在自定义函数InitPin中设置encoder_Left1、encoder_Right1为输入模式。在初始化函数中定义串口波特率为9600,调用自定义函数InitPin,开启0、1号外部中断,触发方式为电平发生变化,中断服务函数分别为counter0、counter1,最后在串口监视窗口打印两行测试方法提醒文本。(3)在loop函数中定义一个字符型变量cmd,读取串口监视器的值保存在cmd中,将K赋值为true,使用while循环函数来判断cmd的值。(四)编码器计数的实现二、实施步骤(四)编码器计数的实现程序运行流程图二、实施步骤(五)定速巡航的实现

步骤1:新建一个文档,//后的代号可删除;在【代码编写区域】中的输入如图所示代码。

二、实施步骤(五)定速巡航的实现

步骤2:在“voidsetup(){”下方输入如图所示代码。

二、实施步骤(五)定速巡航的实现

步骤3:在“voidloop(){”下方输入如图所示代码。

二、实施步骤(五)定速巡航的实现

步骤4:再输入如图所示的voidencoderLeftISR、voidencoderRightISR、intreadEncoder函数代码,以及图所示的voidpwmPI、voidmotorDrive函数代码。

二、实施步骤(五)定速巡航的实现

步骤5:点击上传,如果操作顺利,就会显示上传成功,随后两个电机都进行工作,两后轮驱动行驶,速度为设定的目标速度值(因各类误差影响,速度值会维持在一定范围内有所波动)。

二、实施步骤(五)定速巡航的实现

步骤6:控制程序解析(1)首先使用宏定义#define定义电机控制管脚和编码器管脚与ArduinoUNO板的对应关系。还定义了左右轮的对应的布尔值,方便在程序中判断选择左右轮。(2)接着定义程序需要使用到的变量:包括触发时间、PID相应偏差、计数器、编码器、脉冲宽度、定时器时间、目标值和PID参数等变量。(3)进行初始化设置。首先设置编码器管脚模式并开启外部中断,接着设置串口通信波特率,设置电机驱动控制管脚模式。(4)在loop函数中,使用if选择结构,每隔30ms调用pwmPI计算函数处理数据(同时驱动电机转动),使电机保持设定的转速运行,车辆定速巡航。(5)定义程序需要使用到的子函数:包括左右轮中断服务函数、编码器值读取函数、PI计算函数和电机驱动函数。二、实施步骤(五)定速巡航的实现二、实施步骤(五)定速巡航的实现程序运行流程图二、实施步骤(六)舵机的控制

步骤1:新建一个文档,//后的代号可删除;在【代码编写区域】中的输入如图所示代码。

二、实施步骤(六)舵机的控制

步骤2:分别在“voidsetup(){”和“voidloop(){”的下方输入如图所示代码。

二、实施步骤(六)舵机的控制

步骤3:点击上传,如果操作顺利,就会显示上传成功,随后舵机会根据程序中设定的角度进行转向。可控制在程序中更改舵机转向的角度(范围0-180°)。

二、实施步骤(六)舵机的控制

步骤4:控制程序解析(1)首先定义整型常量servopin对应Arduino板5号管脚,用来控制舵机。同时定义整型变量myangle来储存相应的角度值,pulsewidth来存储经计算得到的脉冲宽度值。(2)自定义子函数servoRun来控制舵机,利用脉冲的持续时间(脉宽)来驱动舵机控制其转角。高电平时间为pulsewidth对应值,单位为μs;低电平时间为(20000-pulsewidth)μs,即delay(20-pulsewidth/1000)ms。其中pulsewidth=(myangl1*11)+500是根据实际情况调节得到的角度和脉宽的关系。(3)进行初始化设置。将servopin(5号管脚)设为输出模式。(4)在loop函数中,调用子函数servoRun来控制舵机转动的角度。servoRun(90)即为时舵机转动到90°。二、实施步骤(六)舵机的控制随堂讨论3Practiceontheclass随堂讨论OLED显示屏与传统LCD显示屏相比,OLED显示屏具有哪些优点呢?请简要叙述出来。1.各组派代表统计遇到的问题。2.各组就各自的主要问题进行交流,并分享解决方法。Arduino编程控制与应用能力模块五掌握Arduino智能控制的应用任务三

完成蓝牙控制功能的实现导入在日常生活中,我们有许多用到蓝牙这项功能的智能设备,例如蓝牙耳机,蓝牙音响,在家居方面还有各种各样的蓝牙设备。同学们对使用蓝牙来远程控制设备的技术是不是也很好奇,今天我们就会使用Arduino来逐步揭开蓝牙远程控制的神秘面纱。目录一、蓝牙技术二、HC02蓝牙模块新授Newteaching1一、蓝牙技术(一)定义

蓝牙是一种低功耗、短距离的无线通信技术,目前广泛应用在耳机、音箱、键盘鼠标等数字设备的通信连接中。蓝牙技术位于全球通用的2.4GHzISM频段,其数据传输速率为1Mbps。一、蓝牙技术(二)通信方式

蓝牙技术规定,每一对设备之间进行蓝牙通信时,必须一个为主角色,另一个为从角色。通信时,主设备主动查找,发起配对,建立链接,然后双方才能开始收发数据。理论上一个蓝牙主设备可以同时与7个蓝牙从设备进行通信。二、HC02蓝牙模块(一)电气特性

套件内的串口蓝牙模块扩展板采用了HC02蓝牙模块,基于蓝牙2.0版本研发,兼容BLE,双模,高稳定性,超低功耗,工业级的蓝牙数传模块。二、HC02蓝牙模块

HC02蓝牙模块的电气特性有:1.模块尺寸2.通讯接口3.波特率4.发射功率5.空中速率6.通信电流7.工作湿度8.工作频段9.工作电压10.通信电平11.参考距离12.天线接口13.接收灵敏度14.工作温度

二、HC02蓝牙模块

27mmx13mmUART1200~115200bps6dBm(最大)1.模块尺寸2.通讯接口3.波特率4.发射功率二、HC02蓝牙模块

2Mbps30mA10%~90%5.空中速率6.通信电流7.工作湿度二、HC02蓝牙模块

2.4G3.0V~3.6V3.3VTTL10m8.工作频段9.工作电压10.通信电平11.参考距离二、HC02蓝牙模块

内置PCB天线-85dBm@2Mbps-25°C~+75°C12.天线接口13.接收灵敏度13.工作温度

二、HC02蓝牙模块(二)连接原理

用户无需关心复杂的无线通信配置以及传输算法,只需要通过TTL串口连接到设备。HC02蓝牙模块只能作为从机使用,可跟笔记本电脑、手机等蓝牙主设备配对后连接进行数据传输,连接原理如下图所示。任务实施2TaskImplementation一、任务准备(一)软件及硬件准备一、任务准备(二)场地设备准备任务实施前需要做好场地防护准备以及检查实训场地和设备设施是否及存在安全隐患,如不正常请汇报老师并进行处理方可实施任务。(三)安全防护准备11.注意Arduino控制开发套件与电脑的连接;22.注意连接端口的匹配;

33.注意Arduino控制开发套件的供电;

44.注意使用含有库文件的程序时,检查ArduinoIDE中是否存在该库文件,若无则要添加。

二、实施步骤(一)控制电路连接

步骤1:Arduino控制开发套件线束连接首先给Arduino控制开发套件供上220V电,通过旋钮使内部电源B输出的电压为12V左右,再将线控小车驱动板与电源B接通,最后将第一块Arduino开发板通过USB连接线与电脑连接。

二、实施步骤(一)控制程序编写与上传

步骤2:在只连接Arduino开发板的情况下,上传文件并等成功后再安装其它扩展板。因为安装上扩展板后开发板上的RX和TX的管脚会被占用,将会导致程序上传不了。

二、实施步骤(二)控制电路连接

步骤1:打开ArduinoIDE软件,进入界面。

二、实施步骤(二)控制电路连接

步骤2:在工具-端口-选择对应的端口。若分不清端口,先把开发板连接上,查看端口,有COM1、COM3、COM4、COM5、COM6;断开开发板连接,查看端口,有COM3、COM4、COM5、COM6;少了一个COM10端口,那么COM10就是对应的端口。

二、实施步骤(三)蓝牙模块控制使用

步骤1:新建一个文档,//后的代码可删除;在【代码编写区域】中的viodsetup下方输入如图所示代码。

二、实施步骤(三)蓝牙模块控制使用

步骤2:在【代码编写区域】中输入“voidLED(intnum){”,并在其下方输入如图所示代码。

二、实施步骤(三)蓝牙模块控制使用

步骤3:最后在“viodlo

温馨提示

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

最新文档

评论

0/150

提交评论