Arduino机器人制作入门教程.pdf
1 Arduino 机器人制作入门教程机器人制作入门教程 深圳市中科鸥鹏智能科技有限公司深圳市中科鸥鹏智能科技有限公司 版权所有版权所有 2014 年年 9 月月 C5 Arduino 机器人制作入门教程 2目目 录录 第一章 Arduino 教学机器人硬件组装和编程入门第一章 Arduino 教学机器人硬件组装和编程入门.1 1 本体组装1 本体组装.1 2 Arduino 硬件和驱动安装硬件和驱动安装.7 3 3 Arduino 编程环境和编程入门Arduino 编程环境和编程入门.10 第二章 机器人点亮一个 LED 灯和串口通信第二章 机器人点亮一个 LED 灯和串口通信.14 1 点亮一个点亮一个 LED 灯灯.14 2 Arduino 机器人与机器人与 PC 通信通信.19 3 通过通过 PC 端控制端控制 LED 灯亮灭灯亮灭.22 第三章第三章 伺服电机控制和机器人运动控制伺服电机控制和机器人运动控制.27 1 伺服电机调零伺服电机调零.27 2 伺服电机旋转伺服电机旋转.31 3 机器人运动控制机器人运动控制.33 第四章第四章 机器人触觉导航机器人触觉导航.39 1 触须电路搭建与测试触须电路搭建与测试.39 2 机器人触须导航程序设计机器人触须导航程序设计.43 第五章第五章 机器人红外导航机器人红外导航.52 1 红外电路搭建与测试红外电路搭建与测试.52 2 机器人红外导航程序设计机器人红外导航程序设计.58 第六章第六章 机器人人机交互和显示技术机器人人机交互和显示技术.64 1 机器人按键控制机器人按键控制 LED 灯亮灭灯亮灭.64 2 数码管显示机器人信息数码管显示机器人信息.66 C5 Arduino 机器人制作入门教程 1第一章 Arduino 教学机器人硬件组装和编程入门 第一章 Arduino 教学机器人硬件组装和编程入门 1 本体组装 1 本体组装 本节将指导你组装 Arduino 教学机器人,必须依照每个组装步骤说明仔细组装。1.1 组装工具组装工具 图 1.1 所示的工具是比较通用的工具,一般家庭或学校都有,在一些五金商店也可以买到。在与书本配套的机器人套件中已经配有此套工具。图 1.1 机器人组装工具 1.2 安装机器人底盘零件安装机器人底盘零件 零件列表分为 4 类:金属杆件,螺钉与铜螺柱,万向轮,电机套件与电池盒。金属杆件名称及数量金属杆件名称及数量 图 1.2 金属杆件图 螺钉与铜螺柱及数量螺钉与铜螺柱及数量 万向轮名称及数量万向轮名称及数量 F)2*11 金属杆件:2 个F)2*11 金属杆件:2 个 D)开槽金属杆件:2 个D)开槽金属杆件:2 个C)1*5 金属杆件:2 个C)1*5 金属杆件:2 个 E)2*10 金属杆件:2 个 E)2*10 金属杆件:2 个 1、尖嘴钳、尖嘴钳2、螺丝刀、螺丝刀B)2*2 转弯件:4 个 B)2*2 转弯件:4 个 A)1*1 金属转弯件:2 个A)1*1 金属转弯件:2 个C5 Arduino 机器人制作入门教程 2 图 1.3 螺钉与铜螺柱图 图 1.4 万向轮图 电机套件与电池盒名称及数量电机套件与电池盒名称及数量 图 1.5 电机套件与电池盒图 1.3 机器人组装步骤机器人组装步骤 步骤步骤 1:组装机器人车体:组装机器人车体 图 1.6 步骤 1 组装后的效果图 1 A)M3*6 平头螺钉:3 个A)M3*6 平头螺钉:3 个 B)M3*6 圆头螺钉:34 个B)M3*6 圆头螺钉:34 个 C)M2.5*6 电屏蔽螺钉 2 个C)M2.5*6 电屏蔽螺钉 2 个D)M3*8 圆头螺钉:8 个D)M3*8 圆头螺钉:8 个 E)12mm 铜螺柱:4 个E)12mm 铜螺柱:4 个 F)20mm 铜螺柱:4 个F)20mm 铜螺柱:4 个 万向轮 1 个万向轮 1 个2)电池盒:1 个2)电池盒:1 个 1)车轮皮带:2 个1)车轮皮带:2 个 3)车轮:2 个3)车轮:2 个 4)伺服电机:2 个4)伺服电机:2 个(1)完成组装步骤)完成组装步骤 1 所需零件:所需零件:1)M3*6 圆头螺钉:11 颗 2)2*10 金属杆件:2 个 3)2*11 金属杆件:2 个 4)20cm 铜螺柱:4 个 5)1*5 金属杆件:2 个 6)开槽金属杆件:1 个(2)组装说明)组装说明 1)图 1.6 和图 1.7 是步骤 1 需要完成的组装内容。2)图 1.6 横向为底盘框架的长,采用 2*11 金C5 Arduino 机器人制作入门教程 3 图 1.7 步骤 1 组装后的效果图 2 步骤步骤 2:组装机器人电机安装支架:组装机器人电机安装支架 图 1.8 组装后的前方效果图 图 1.9 组装后的后方效果图 图 1.10 组装后的侧方效果图 步骤步骤 3:电机的安装:电机的安装(1)完成组装步骤)完成组装步骤 2 所需零件:所需零件:1)1*1 金属转弯件:2 个 2)2*2 金属转弯件:4 个 3)开槽金属杆件:1 个 4)M3*6 圆头螺钉:10 颗(2)组装说明)组装说明 1)组装方式参照图 1.8、图 1.9 和图 1.10。2)先按照图 1.8 和图 1.9 将 4 个 2*2 金属转弯件安装于底盘前部的两侧,用于固定伺服电机。再按图 1.10 用 2 个 1*1 金属转弯件将开槽金属杆件固定于前部,用于安装传感器或者其它工具。C5 Arduino 机器人制作入门教程 4 图 1.11 伺服电机安装侧面图 图 1.12 步骤 3 之伺服电机安装底部图 步骤步骤 4:车轮、皮带和电池盒的安装:车轮、皮带和电池盒的安装 图 1.13 安装车轮和轮皮带的效果图 图 1.14:安装电池盒图 1 图 1.15:安装电池盒图 2 步骤步骤 5:安装万向轮:安装万向轮(1)完成组装步骤)完成组装步骤 3 所需零件:所需零件:1)伺服电机:2 个 2)M3*8 圆头螺钉:8 颗(2)组装说明)组装说明 1)按图 1.11 和图 1.12 安装伺服电机。2)用 8 颗 M3*8 圆头螺钉将两个伺服电机安装于底盘两侧前端。3)图 1.11 伺服电机安装侧面图;图 1.12 为伺服电机安装底部图。(1)完成组装步骤)完成组装步骤 4 所需零件:所需零件:1)车轮皮带:2 个 2)车轮:2 个 3)3*4 电池盒:1 个 4)M3*6 平头螺钉:2 颗 5)M2.5*6 电屏蔽螺钉:2 颗(2)组装说明)组装说明 1)先将车轮皮带套到车轮上,再用两颗 M2.5*6 电屏蔽螺钉将车轮安装到电机上,图 1.13 为安装好的效果图。2)用 2 颗 M3*6 平头螺钉将电池盒安装到底盘上开槽金属杆件上,如图 1.14和图 1.15 所示。C5 Arduino 机器人制作入门教程 5 图 1.16 万向轮安装后的后视效果图 图 1.17 万向轮安装后的侧视效果图 图 1.18 组装完成的机器人底盘总体效果图 步骤步骤 6 安装安装 Arduino 控制板和扩展学习板控制板和扩展学习板(1)完成组装步骤)完成组装步骤 5 所需零件:所需零件:1)12mm 铜螺柱:4 个 2)M3*6 圆头螺钉:8 颗 3)万向轮:1 个(2)组装说明)组装说明 1)首先用 4 颗 M3*6 圆头螺钉将4个12mm铜螺柱安装到万向轮上。2)再把万向轮安装于底盘的尾部,安装方法如图 1.16 和图 1.17所示。3)到此机器人底盘便组装完毕,图 1.18 所示为组装完毕的机器人底盘整体效果图。C5 Arduino 机器人制作入门教程 6 图 1.19 机器人组装完成侧面图 图 1.20 机器人组装完成前部图 图 1.21 机器人组装完成上部图(1)完成组装步骤)完成组装步骤 6 所需零件:所需零件:1)Arduino 控制板:1 个 2)M3*6 圆头螺钉:3 颗 3)M3*6 平头螺钉:1 颗 4)扩展学习板:1 个(2)组装说明)组装说明 1)首先使用两颗 M3*6 圆头螺钉将扩展学习板安装于机器人底盘前上部。2)再使用一颗 M3*6 圆头螺钉和一颗 M3*6 平头螺钉将 Arduino 教学板安装到底盘后部开槽金属杆件的两个铜螺柱上。安装方式参照图1.19、图 1.20 和图 1.21。3)到此机器人组装全部完成。C5 Arduino 机器人制作入门教程 72 Arduino 硬件和驱动安装硬件和驱动安装 2.1 Arduino 控制板介绍控制板介绍 图 1.22 Arduino UNO 学习板说明图 这里使用的 Arduino 控制板是 Arduino 系列产品中的一个新成员,如图 1.22 所示,其接口电压为:712V,有 USB 串口下载和 ISP 下载两种程序下载模式,控制芯片是 Atmega8 芯片,该芯片具有数字引脚、模拟引脚、串口通信引脚、PWM 输出引脚、外部中断引脚、SPI 通信端口和 TWI 通信端口。具体的引脚说明如下:?数字引脚:013(共 14 个数字 IO 口);?模拟引脚:A0A5(为区分数字引脚,在引脚前加 A);?串行通信:0,1(这些引脚是一些数字引脚的第二功能;0 作为 RX,即接收数据引脚;1 作为 TX,即发送数据引脚);?PWM 输出:3,5,6,9,10,11(这些引脚是一些数字引脚的第二功能);?SPI 通信:10(SS),11(MOSI),12(MISO),13(SCK)(这些引脚是一些数字引脚的第二功能);?TWI 通信:A4(SDA),A5(SCL)(这些引脚是一些模拟引脚的第二功能);2.2 Arduino 控制板原理图控制板原理图 复位按键复位按键 USB 下载下载 端口端口 电源接口电源接口 14 个数字个数字IO 口口 AT ISP 下载接口下载接口 AVR 芯片芯片 6 个模拟个模拟IO 口口 C5 Arduino 机器人制作入门教程 8图 1.23 Arduino 控制板原理图 想详细了解 Arduino 控制板的电路连接及芯片连接可参考图 1.23。2.3 Arduino 控制板硬件驱动安装 2.3 Arduino 控制板硬件驱动安装 (1)将数据线的圆口端插在 Arduino 控制板上,如图 1.24 所示。图 1.24 数据线的方口端插到 Arduino 控制板图 (2)将数据线扁口端插入电脑的一个 USB 接口上。(3)Arduino 控制板与电脑连接后,打开设备管理器,会发现未安装驱动的设备。如图 1.25 所示。图 1.25 查看设备管理器图(4)将机器人配套光盘放入电脑光驱中,双击如图 1.26 所示的光盘图标进入光盘。然后双击软件文件夹,再双击开发辅助工具文件夹,在开发辅助工具文件夹内看到名为“CH341SER.EXE”的Arduino 控制板硬件驱动文件,如图 1.27 所示。图 1.26 双击光盘图标进入光盘 图 1.27 Arduino 控制板硬件驱动文件(5)双击图 1.27 所示图标,产生如图 1.28 所示的界面。单击安装,等待十几秒文件自动安装,C5 Arduino 机器人制作入门教程 9待安装成功将弹出图 1.29 所示的对话框,单击“确定”Arduino 控制板硬件驱动安装完成。安装完成后再去查看设备管理器,此时端口(COM 和 LPT)选项下的感叹号没了,感叹号“USB2.0-Serial”端口变成“USB-SERIAL CH340(COM5)”端口,(COM5)由连接的 USB 端口决定。如图 1.30 所示为安装成功感叹号“USB2.0-Serial”端口变成“USB-SERIAL CH340(COM5)”端口的效果图。图 1.28 安装 Arduino 控制板硬件驱动界面 图 1.29 安装成功弹出的对话框 图 1.30 变成“USB-SERIAL CH340(COM5)”端口效果图 C5 Arduino 机器人制作入门教程 103 Arduino 编程环境和编程入门3 Arduino 编程环境和编程入门 3.1 Arduino 编程环境获取 3.1 Arduino 编程环境获取 Arduino 开发环境是以 AVR-GCC 和其他开源软件为基础,并采用 Java 编写,软件无需安 装,下 载 完 成 解 压 缩 后 就 可 以 直 接 打 开 使 用。软 件 可 以 从 Arduino 的 网 站http:/www.arduion.cc 上免费下载,如图 1.31 为 Arduino 的网站截图。图 1.31 登录 Arduino 网站截图 在 Arduino 网站中找到如图 1.32 所示的界面,并找到红色框内的选项,选择你电脑对应的版本下载下来。Windows Installer 选项是下载 Arduino 软件的 Windows 下的可执行文件,Windows 选项是下载下载 Arduino 软件的 Windows 下的压缩文件。前者需要安装,后转免安装。图1.32 选择Arduino开发环境下载版本截图 图1.33 Arduino开发环境启动图标 本文主要讲解免安装压缩文件如何找到 Arduino 开发环境。首先解压 Windows 选项下载的压缩包,点击进入解压文件,并找到如图 1.33 所示的 Arduino 开发环境启动图标,双击图标便启动 Arduino 开发环境。弹出如图 1.34 所示的 Arduino 开发环境界面图。C5 Arduino 机器人制作入门教程 11 图 1.34 Arduino 开发环境界面 3.2 编程入门编程入门 Arduino 开发环境菜单栏下方是最常用的 5 个功能按钮,读者需要了解一下这 5 个功能按钮,如图 1.35 所示。这 5 个功能按钮依次是:Verify(校验)、Upload(上传)、New(新建)、Open(打开)、Save(保存)。图 1.35 Arduino 开发环境菜单栏下方 5 个按钮 各按钮的具体功能如下:效验 上传 新建 打开 保存C5 Arduino 机器人制作入门教程 12 Verify(校验),用以完成程序的检查与编译。Upload(上传),将编译后的程序文件上传到 Arduino 板中。New(新建),可新建一个程序文件。Open(打开),打开一个存在的程序文件,Arduino 开发环境下的程序文件后缀名为.pde。Save(保存),保存当前程序文件。下面将通过调用 Arduino 开发环境封装的程序实现 LED 灯闪烁的例子。Arduino 控制板的 13 号脚与一个 LED 灯连接,如图 1.36 所示。控制 13 号脚 LED 灯闪烁的程序为 Blink 程序,直接调用 Blink 程序便可看到 Arduino 控制板上 13 号 LED 灯闪烁。图 1.36 连接 13 号引脚的 LED 灯位置示意图 首先点击 Open 按钮,选择 01.BasicsBlink,再点击 Blink 选项,Blink 程序就可以加载到 Arduino 开发环境的编辑区,如图 1.37 为寻找 Blink 程序选项示意图。图 1.37 寻找 Blink 程序选项示意图 点击“校验”按钮实现对程序的编译和检查。等待片刻后状态栏会提示编译错误,如果编译没有错误则提示 Done compiling(程序编译完成)。在状态栏的黑色区域会显示有信息提示去,用来显示编译错误或编译完成后的大小,如图 1.38 所示,Blink 程序编译后的大小为 1084 bytes。与与 13 号脚连接的号脚连接的 LED 灯灯 C5 Arduino 机器人制作入门教程 13 图 1.38 Blink 程序编译后的大小 编译完成后连接 USB 下载线,点击“上传”按钮,点击上传可能会出现选择下载端口对话框,如图 1.39 所示。选择 USB 连接线对应的端口,点击确认便可。上传成功状态栏会有上传成功提示:Done uploading。如图1.40所示的提示信息。上传完成后观察到Arduino控制板上 LED 灯不停闪烁,Arduino 控制板通过 LED 闪烁的方式告诉你,你已经会使用Arduino 了,Arduino 的使用就是这么简单。图 1.39 选择端口对话框 图 1.40 上传成提示示意图 C5 Arduino 教学机器人教程 14第二章 机器人点亮一个 LED 灯和串口通信 第二章 机器人点亮一个 LED 灯和串口通信 1 点亮一个点亮一个 LED 灯灯 1.1 LED 灯简介灯简介 LED 全称为发光二极管,它由镓(Ga)、砷(As)与磷(P)的化合物制成的二级管。LED 的发光原理是:当电源的正极与二极管的阳极相连,负极与二极管的阴极相连,此时二极管内部的电子与空穴复合辐射出可见光。在电路及仪器中 LED 常作为指示灯,或者组成文字或数字显示。不同的元素组合 LED 会发出不同的光,如磷砷化镓发红光、磷化镓二极管发绿光、碳化硅二极管发黄光。LED 灯的工作电压一般为 1.52.0V,其工作电流一般为 320mA。所以在 5V 的逻辑电路中,可使用 1k 电阻作为限流电阻。1.2 点亮点亮 LED 电路连接电路连接 任务所需元器件清单:?LED 一个?1k 一个?Arduino 机器人 一个?导线 若干?USB 下载线 1 条 本任务在扩展学习板的面包板上完成电路连接,在连接电路前先对扩展学习板上的面包板作简单介绍。如图 2.1 所示,面包板上的孔共有 10 行 17 列,列与列之间互不相通。中间凹槽为分界,凹槽上测同列相连通,凹槽下侧同列也相连通,凹槽两侧则互不相通。图 2.1 扩展学习板 根据图 2.2 所示的电路连接图连接电路。图 2.2 中 图标代表 Arduino 板上的 2号引脚;图标代表Arduino板上的5V端口(即VCC);图标代表电阻元件(阻值1k),电阻在电路中起到保护 LED 灯的作用;图标代表 LED 灯,图标的竖线和尖头一端是LED 灯的阴极,而另一端是 LED 灯的阳极。LED 电路连接图详解:LED 灯的阳极与 5V 端口(即 VCC)连接,其阴极先与电阻连接,再连接到 2 号引脚。LED 电路驱动方式是采用低电平驱动,当 2 号引脚输出为低电平时,LED 灯亮;当 2 号引脚输出为高电平时,LED 灯灭。准备好元器件清单列出的所有元器件,根据图 2.2 所示 LED 电路连接图在 Arduino 机器人面包板上完成 LED 电路连接,如图 2.3为 LED 电路连接实物图。同 列同 列各 列之间不相各 列之间不相同 列同 列各 列各 列之间不相之间不相凹 槽凹 槽两侧不相两侧不相C5 Arduino 教学机器人教程 15 图 2.2 LED 电路连接图 图 2.3 LED 电路连接实物图 1.3 控制控制 LED 亮灭程序亮灭程序 (1)控制控制 LED 亮灭程序编辑亮灭程序编辑 点击 New(新建)按钮新建 Arduino 开发环境下的程序文件,如图 2.4 为点击新建按钮新建程序文件。再点击 Save(保存)按钮选择保存路径,新建一个 LED 文件夹用来保存程序文件,该程序文件以“LED”命名,并将该文件保存入 LED 文件夹。如图 2.5 选择保存类型“所有文件(*.*)”不变,最后点击保存即成功生成 LED.ino 程序文件,并且对话窗口自动跳转到 LED 程序文件编辑窗口,如图 2.6 所示。图 2.4 点击新建按钮新建程序文件 C5 Arduino 教学机器人教程 16 图 2.5 选择新建程序文件保存路径 图 2.6 LED 程序文件编辑窗口 按图 2.7 所示将控制 LED 亮灭程序写入编辑区,点击 Verify(校验)对程序进行编译和检查,如果程序写入无疏漏则编译通过。接通 Arduino 控制板的电源,首先用 USB 下载线连接 Arduino 控制板与电脑,再点击 Upload(上传)将编译完成的控制程序下载入Arduino 控制板,下载的过程中软件自动搜索 USB 下载线端口,如端口有变化则软件会弹出如图 2.8 所示的对话框,点击确定便可成功下载控制程序。仔细观察 LED 灯亮灭变化,会看到 LED 灯每 0.5s 间隔亮一次。图 2.7 控制 LED 亮灭程序 C5 Arduino 教学机器人教程 17 图 2.8 端口改变软件弹出对话框 控制 LED 亮灭程序主要由 pinMode()、digitalWrite()、delay()三个函数构成,这三个函数是 Arduino 封装子函数,在 Arduino 开发环境下可以直接调用。下面对这 3 个函数作详细说明:?pinMode(pin,mode)函数是数字 IO 口输入输出模式函数,它是一个无返回值的函数,函数有两个输入参数 pin 和 mode,pin 参数表示所要配置的引脚(即 013 引脚),mode 参数表示设置的模式INPUT(输入)或 OUTPUT(输出)。?digitalWrite(pin,value)函数是数字 IO 口输出电平定义函数,它的作用是设置引脚的输出电压为高电平或低电平,该函数无返回值。函数有 2 个输入参数,即 pin 和value。pin 参数表示所要设置的引脚(013 引脚),value 参数表示输出的电压HIGH(高电平)或 LOW(低电平)。?delay(ms)函数是一个延时函数,输入参数为无符号长整型(即 unsigned long),输入参数表示延时时长,单位为 ms。函数无返回值。注明:无符号长整型是一种数值表示范围,当一个变量被定义为无符号长整型时,该变量的值表示范围是:04294967295。其他数字 I/O 口设置函数的补充:digitalRead(pin)函数是用在引脚为输入的情况下,获取引脚电压情况的输入函数。获取的电压为HIGH(高电平)或 LOW(低电平),参数 pin 表示所要获取电压值的引脚编号,该函数返回值为 int 型,表示引脚的电压情况。(2)控制控制 LED 亮灭程序如何工作亮灭程序如何工作 Arduino 程序一般由 setup()和 loop()函数构成。setup()函数是初始化部分,setup()函数一般放在程序开头,该函数主要用于设置一些引脚的输入/输出模式、初始化串口等,该函数只在上电或重启时执行一次。loop()函数是执行部分,loop()函数是个死循环函数,loop()函数内的代码将被循环执行,该函数用于完成程序的大部分功能,因此大部分函数都放在 loop()函数内执行。控制 LED 亮灭程序由 setup()和 loop()两部分构成,下面对 setup()、loop()和程序执行操作做详细介绍。程序首先进入setup()函数,在setup()函数内把2号引脚设置为输出引脚。setup()函数内程序如下:void setup()/设置 2 号引脚为输出引脚 pinMode(2,OUTPUT);setup()函数执行一次结束,再执行 loop()函数。loop()函数程序如下:void loop()C5 Arduino 教学机器人教程 18 /设置 2 号引脚输出为高电平,LED 灯灭。digitalWrite(2,HIGH);/延时 0.5s。delay(500);/设置 2 号引脚输出为低电平,LED 灯亮。digitalWrite(2,LOW);/延时 0.5 s。delay(500);loop()函数是一个死循环函数,其中的代码将被循环执行。loop()函数执行操作如下:1)设置 2 号引脚为高电平,LED 灯灭;2)延时 0.5s;3)设置 2 号引脚为低电平,LED 灯亮;4)延时 0.5s;5)回到 1)。以下将用流程图的形式详解程序执行操作,如图 2.8 所示。setup()2loop()20.5s20.5s 图 2.8 控制 LED 灯亮灭程序流程图 C5 Arduino 教学机器人教程 192 Arduino 机器人与机器人与 PC 通信通信 在古代人类通过驿站、飞鸽传书、烽火报警、符号、身体语言、眼神、触碰等方式进行通信,在科技飞速发展的现代,人们通过固定电话、移动电话、互联网甚至视频电话等方式进行通信。不管在那个时代通信都非常重要,有效通信能提高人与人之间的协作能力,提高工作效率,拉近人与人的距离。在实际应用中,机器人需要与机器人通信或机器人与外部设备通信,这样机器人才能完成每一项任务。本任务将学习 Arduino 机器人与 PC 通信,通过 USB 串口线实现 Arduino 机器人与 PC 的通信。Arduino 机器人与 PC 的通信方式是串行全双工通信,串行通信分为三种:单双工、半双工和全双工。?单双工指数据传输仅能沿一个方向,不能实现反方向传输。?半双工指数据传输可以沿两个方向,但需要分时进行。?全双工指数据可以同时进行双向传输。Arduino 控制板有两个引脚专门用于通信,这两个专业引脚是:RX 和 TX。其中,RX为接收引脚,该引脚是 Arduino 控制板用于接收外部设备通过串口发送的信息;TX 为发送引脚,该引脚是 Arduino 控制板用于通过串口发送信息给外部设备。Arduino 控制板的 USB下载口与 RX 和 TX 引脚相连,所以 USB 下载线只要与 PC 相连就可进行通信。任务所需元器件清单:?USB 下载线 1 条?Arduino 机器人 1 辆(1)机器人与机器人与 PC 通信程序通信程序 void setup()/波特率设置为 9600 Serial.begin(9600);void loop()/单片机向 PC 发送“Hello Word!”字符串。Serial.println(Hello World!);/延时 1s,每次发送字符串间隔 1s。delay(1000);机器人与 PC 通信涉及一个专业词语波特率。在电子通信领域,单片机(Arduino控制板上使用的单片机是 AVR)或计算机在串口通信时的速率用波特率表示,它的定义为每秒传输二进制代码的位数,即 1 波特=1 位/秒,单位为 bps(位/秒)。如果串口通信波特率设置为 9600 bps,则表示串口每秒传输 9600 位二进制代码。(2)函数说明函数说明 机器人与 PC 通信程序使用了两个新函数,即 Serial.begin(x)函数和 Serial.println(val,formal)函数。这两个函数的详细说明如下所述:C5 Arduino 教学机器人教程 20?Serial.begin(x)函数是初始化串口波特率函数,该函数无返回值,输入变量 x 为unsigned long 型。如设置串口通信波特率为 9600,则为 Serial.begin(9600)。?Serial.println(val,formal)函数是串口输出数据函数,该函数无返回值。输入变量val 为需要打印的数据;输入变量 formal 为输出数据格式,包括整数类型和浮点型数据,当 formal 变量缺省时,默认为整数型输出。(3)机器人与机器人与 PC 通信操作通信操作 将机器人与 PC 通信程序写入 Arduino 编程环境中,写完程序点击 Verify(校验)对程序进行编译和检查,如果程序写入无疏漏则编译通过。接通 Arduino 控制板的电源,首先用USB 下载线连接 Arduino 控制板与 PC,再点击 Upload(上传)将编译完成的程序下载入Arduino 控制板。保持 USB 下载线连接,调去 Arduino 软件自带的串口调试助手查看机器人发送给 PC 的字符串。调用 Arduino 软件步骤:先点击 Arduino 软件菜单栏的 Tools 选项,再点击 Serial Monitor 选项,操作方式如图 2.9 所示;然后点击 Serial Monitor 选项弹出如图2.10 所示的串口调试助手,在串口调试助手上可看到机器人发送给 PC 的字符。图 2.9 调去 Arduino 软件自带的串口调试助手 C5 Arduino 教学机器人教程 21 图 2.10 串口调试助手显示接收的字符 C5 Arduino 教学机器人教程 223 通过通过 PC 端控制端控制 LED 灯亮灭灯亮灭 上一节我们学习了 Arduino 控制板发送信息给 PC,这一节我们将学习 PC 发送信息给Arduino 控制板,Arduino 控制板根据接收到的信息控制 LED 灯亮灭。学习本案例所需元器件:?LED 1 个?1k 电阻 1 个?Arduino 机器人 1 辆?USB 下载线 1 条?导线 若干(1)电路连接电路连接 根据图 2.11 的电路连接原理在扩展学习板上连接好电路,如图 2.12 所示为 LED 电路连接实物图。本案例的电路连接方式与第一节的电路连接方式完全相同,本案例的电路连接方式是:LED 的阳极与+5V(VCC)相连,LED 阴极与 1 k 电阻相连,1 k 电阻另一端再与Arduino 控制板的 2 号引脚相连。图 2.11 LED 灯电路连接原理图 图 2.12 LED 电路连接实物图(2)PC 端控制端控制 LED 灯亮灭程序灯亮灭程序 void setup()/设置 2 号引脚为输出引脚 C5 Arduino 教学机器人教程 23 pinMode(2,OUTPUT);/波特率设置为 9600 Serial.begin(9600);void loop()/control 变量定义为用于接收 PC 发送信息的变量。int control;/判断串口是否接收到数据。if(Serial.available()control=Serial.read();if(control=H|control=h)/设置 2 号引脚输出为高电平,LED 灯灭。digitalWrite(2,HIGH);/单片机向 PC 发送“Destroy the LED!”字符串。Serial.println(Destroy the LED!);/延时 0.5s。delay(500);if(control=L|control=l)/设置 2 号引脚输出为高电平,LED 灯亮。digitalWrite(2,LOW);/Arduino 向 PC 发送“Light up the LED!”字符串。Serial.println(Light up the LED!);/延时 0.5s。delay(500);本案例学习了新的语句if 语句。该语句是条件选择判断语句,该语句可以实现选择结构。它可根据给定的条件进行判断,以决定执行某个分支程序段。if 语句有三种基本形式:1)第一种基本形式 if(表达式)语句 2)第二种基本形式 if(表达式)语句 1 else 语句 2 3)第三种基本形式 if(表达式 1)语句 1 else if(表达式 2)语句 2 else if(表达式 3)语句 3 C5 Arduino 教学机器人教程 24 else if(表达式 n)语句 n else 语句 m 三种 if 语句的功能描述:如果表达式 1 的结果为真,则执行语句 1,然后退出 if 选择语句,不执行下面的语句;否则,判断表达式 2,如果表达式 2 的结果为真,则执行语句 2,然后退出 if 选择语句,不执行下面的语句,同样如果表达式 2 的结果为假则判断表达式 3,依次类推,最后,如果表达式 n 不成立,则执行 else 后面的语句 m。在使用 if 语句时还要注意以下问题:?在 3 种基本形式中,if 关键字后面均为表达式。该表达式通常是逻辑表达式或关系表达式,也可以是一个变量。?在 if 语句中,条件判断表达式必须用括号括起来。在语句之后必须加分号,如果是多行语句组成的程序段,则要加话括号括起来。本节使用的 本案例使用了新函数Serial.available(),该函数的作用是判断串口是否收到数据,函数的返回值为 int 型(整型)。该程序具体流程如下所述:1)首先在 setup()函数中设置 2 号引脚为输出引脚和设置通信波特率为 9600;2)进入 loop()函数,先定义接收 PC 发送信息的变量control;3)在利用 Serial.available()函数判断串口是否接收到信息;4)接收到信息,判断接收到的信息。如果接收到的信息为“H”或“h”,则 LED 灯灭,并向 PC 发送“Destroy the LED!”提示信息,在延迟 0.5 s;如果接收到的信息为“L”或“l”,则 LED 灯亮,并向 PC 发送“Light up the LED!”提示信息。5)回到 3),在 loop()函数内一直循环执行。C5 Arduino 教学机器人教程 25 图 2.13 PC 端控制 LED 灯亮灭程序流程图 C5 Arduino 教学机器人教程 26(3)PC 端控制端控制 LED 灯亮灭实现灯亮灭实现 将 PC 端控制 LED 灯亮灭程序写入 Arduino 编程环境的编辑区,输入完程序点击 Verify(校验)对程序进行编译和检查,如果程序写入无疏漏则编译通过。接通 Arduino 控制板的电源,首先用 USB 下载线连接 Arduino 控制板与 PC,再点击 Upload(上传)将编译完成的程序下载入 Arduino 控制板。保持 USB 下载线连接,调去 Arduino 软件自带的串口调试助手查看机器人发送给 PC 的字符串。调用 Arduino 软件步骤:(1)先点击 Arduino 软件菜单栏的 Tools 选项;(2)再点击 Serial Monitor 选项,操作方式如图 2.9 所示;(3)然后点击 Serial Monitor 选项弹出如图 2.14 所示的串口调试助手;(4)在 Send 左边输入栏上输入字符。如输入“l”或“L”则点亮 LED 灯,同时 Arduino控制板发回“Light up the LED!”提示信息;如输入“h”或“H”则 LED 灯灭,同时 Arduino控制板发回“Destroy the LED!”提示信息。图 2.14 Arduino 软件自带串口调试助手 C5 Arduino 教学机器人教程 27第三章第三章 伺服电机控制和机器人运动控制伺服电机控制和机器人运动控制 伺服电动机又称执行电动机,在自动控制系统中,用作执行元件,把所收到的电信号转换成电动机轴上的角位移或角速度输出。伺服电机可使控制速度、位置精度非常准确。本教材使用的是连续旋转伺服电机,该电机具有速度控制精度高,但角度位置精度差。如图 3.1所示,图中指示了该伺服电机的外部配件,这些配件将在本章或后续章节中使用到。图 3.1 连续旋转伺服电机 1 伺服电机调零伺服电机调零 本讲将学习电机与 Arduino 控制板的连接方式,及如何对电机调零。本任务所需清单如下所述:?连续旋转伺服电机 2 台?Arduino 控制板 1 块?6V 电源 1 个(1)伺服电机控制脉冲说明伺服电机控制脉冲说明 连续旋转电机与一般电机有所不同,连续旋转电机的外接线有三根,白色线为信号线,红色线为电源线,黑色线为电源地线。一般电机只有 2 根线,即电源线和电源地线。控制板通过信号线,发送 PWM 信号控制连续旋转电机转动速度。这里的 PWM 即脉冲宽度调制,简称脉宽调制。以 PWM 信号为控制方式在电力电子技术领域有广泛应用,PWM 控制技术具有控制简单、灵活和动态响应好等优点。如图 3.2 所示高电平持续时间(即脉宽)是 1.5ms,低电平持续 20ms 的 PWM 重复脉冲序列,用该脉冲序列控制经过零点标定后的伺服电机,伺服电机不会旋转。如果此时电机旋转,则表明电机需要标定,及伺服电机调零。如图 3.3 所示是高电平持续 1.3ms,低电平持续 20ms 的 PWM 重复脉冲序列,该脉冲系列是伺服电机全速顺时针旋转的控制脉冲系列。而高电平持续时间(即脉宽)在 1.3ms 到1.5ms 时,伺服电机顺时针旋转速度依次降低。如图 3.4 所示是高电平持续 1.7ms,低电平持续 20ms 的 PWM 重复脉冲序列,该脉冲系列是伺服电机全速逆时针旋转的控制脉冲系列。而高电平持续时间(即脉宽)在 1.7ms 到1.5ms