第3讲C语言函数与机器人巡航控制.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 3 讲 C 语言函数与机器人 巡航控制 通过对单片机编程可以使机器人完成各种巡航动作。本讲使用C51 单片机和C 语言来 重新实现这些功能,同时详细了解C 语言函数的定义和使用方法。前面已经提到,函数是C 语言的核心概念和方法。 本讲所要完成的主要任务如下。 (1 )对单片机编程使机器人做基本巡航动作:向前、向后、左转、右转和原地旋转。 (2 )编写程序使机器人由突然启动或停止变为逐步加速或减速运动。 (3 )写一些执行基本巡航动作的函数,每一个函数都能够被多次调用。 (4 )将复杂巡航运动记录在数组中,编写程序执行这些巡航运动。 图 3-1 定义了机器人的前、后、左、右 4 个方向:当机器人向前走时,它将走向本页纸 的右边;当向后走时,会走向纸的左边;向左转会使其向 纸的顶端移动;向右转它会朝着本页纸的底端移动。 向前巡航 按照图 3-1 前进方向的定义,机器人向前走时,从机 器人的左边看,它向前走时轮子是逆时针旋转的;从右边 看另一个轮子则是顺时针旋转的。 回忆一下第2 讲的内容,发给单片机控制引脚的高电 平持续时间决定了伺服电机旋转的速度和方向。for 循环的 图3-1 机器人及其前进方向的定义 参数控制了发送给电机的脉冲数量。由于每个脉冲的时间是相同的,因而 for 循环的参数也 控制了伺服电机运行的时间。下面是使机器人向前走 3s 的程序实例。 RobotForwardThreeSeconds.c  确保控制器和伺服电机都已接通电源;  输入、保存、编译、下载并运行程序 RobotForwardThreeSeconds.c 。 #includeBoeBot.h #includeuart.h int main(void) { int counter; uart_Init(); printf(Program Running!\n); for(counter=0;counter130;counter++)//运行 3s { P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; delay_nms(20); } while(1); } RobotForwardThreeSeconds.c 理解该例程的运行你应该没什么问题:for 循环体中前三行语句使左侧电机逆时针旋转, 接着的三行语句使右侧电机顺时针旋转。因此两个轮子转向机器人的前端,使机器人向前运 动。整个 for 循环执行 130 次大约需要 3s,从而机器人也向前运动 3s 。 关于例程调试的一点说明 例程中使用 printf 函数是为了起提示作用。若你觉得串口线影响了机器人的运动,可以 不用此函数。还有一个进行调试的方法:让机器人的前端悬空,让伺服电机空转。这样调试 起来就方便了,机器人不会到处乱跑。后面的例程调试也是这样。 ·38 · 调节距离和速度  将 for 循环的循环次数调到 65,可以使机器人运行时间减少到刚才的一半,运行距离 也是一半;  以新的文件名保存程序RobotForwardThreeSeconds.c ;  运行程序来验证运行的时间和距离是否为刚才的一半;  将 for 循环的循环次数调到 260 ,重复这些步骤。 delay_nus

文档评论(0)

136****3783 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档